From: Simon Ruderich Date: Tue, 1 Jun 2021 06:17:49 +0000 (+0200) Subject: remote: remove SyncPath() X-Git-Url: https://ruderich.org/simon/gitweb/?p=safcm%2Fsafcm.git;a=commitdiff_plain;h=b38c56e45416cd64cdac2cddffb212e0d48e2638;hp=e3d16bd668c3608bf2416bb57949678ac8300e15 remote: remove SyncPath() Not removed in 2804606 (remote: guard against symlinks in earlier path components, 2021-06-01) to make the diff more readable. --- diff --git a/remote/sync/files.go b/remote/sync/files.go index edf81bd..24c59ce 100644 --- a/remote/sync/files.go +++ b/remote/sync/files.go @@ -456,6 +456,13 @@ reopen: unix.Unlinkat(parentFd, tmpBase, 0) return err } + // To guarantee durability fsync must be called on a parent directory + // after adding, renaming or removing files therein. +// +// Calling sync on the files itself is not enough according to POSIX; man 2 +// fsync: "Calling fsync() does not necessarily ensure that the entry in the +// directory containing the file has also reached disk. For that an explicit +// fsync() on a file descriptor for the directory is also needed." err = unix.Fsync(parentFd) if err != nil { return err @@ -695,24 +702,3 @@ retry: return os.NewFile(uintptr(fd), ""), tmpBase, nil } - -// SyncPath syncs path, which should be a directory. To guarantee durability -// it must be called on a parent directory after adding, renaming or removing -// files therein. -// -// Calling sync on the files itself is not enough according to POSIX; man 2 -// fsync: "Calling fsync() does not necessarily ensure that the entry in the -// directory containing the file has also reached disk. For that an explicit -// fsync() on a file descriptor for the directory is also needed." -func SyncPath(path string) error { - x, err := os.Open(path) - if err != nil { - return err - } - err = x.Sync() - closeErr := x.Close() - if err != nil { - return err - } - return closeErr -}