sysroot: Write symlinks before calling fsync(), then rename after
There might be a race here in that we create new symlink files *after* calling `syncfs`, and they are not guaranteed to end up on disk. Rework the code so that we create symlinks before, and then only rename them after (and `fsync()` the directory for good measure). Additional-fixes-by: Giuseppe Scrivano <gscrivan@redhat.com> Tested-by: Giuseppe Scrivano <gscrivan@redhat.com> This still needs verification that we're fixing a real bug; but I'm fairly confident this won't make the fsync situation worse. https://bugzilla.gnome.org/show_bug.cgi?id=755595
This commit is contained in:
1 parent
70c07a6338
commit
723705b803
3 files changed
+211
-110
No files matched your search
@@ -85,11 +85,6 @@ gboolean ot_gfile_ensure_unlinked (GFile *path,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
||||
gboolean ot_gfile_atomic_symlink_swap (GFile *path,
|
||||
const char *target,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
||||
gboolean ot_util_ensure_directory_and_fsync (GFile *dir,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
||||
Reference in new issue
Block a user