From 8459bb15c1a32561c250a8b688ab4a7ecda0a4aa Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sun, 7 Apr 2019 22:04:21 +0200 Subject: [PATCH] configfile: fall back to sync() if fsync() fails This can happen on network drives: FRITZ.NAS mounted on MacOS returns "operation not supported": https://github.com/rfjakob/gocryptfs/issues/390 --- internal/configfile/config_file.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/configfile/config_file.go b/internal/configfile/config_file.go index c6c6e6d..e93affd 100644 --- a/internal/configfile/config_file.go +++ b/internal/configfile/config_file.go @@ -8,6 +8,7 @@ import ( "io" "io/ioutil" "log" + "syscall" "github.com/rfjakob/gocryptfs/internal/contentenc" "github.com/rfjakob/gocryptfs/internal/cryptocore" @@ -285,7 +286,11 @@ func (cf *ConfFile) WriteFile() error { } err = fd.Sync() if err != nil { - return err + // This can happen on network drives: FRITZ.NAS mounted on MacOS returns + // "operation not supported": https://github.com/rfjakob/gocryptfs/issues/390 + tlog.Warn.Printf("Warning: fsync failed: %v", err) + // Try sync instead + syscall.Sync() } err = fd.Close() if err != nil {