瀏覽代碼

lib/model: Don't fail operation when fsync() fails (fixes #5704) (#5705)

Jakob Borg 6 年之前
父節點
當前提交
31be810eb6
共有 1 個文件被更改,包括 8 次插入6 次删除
  1. 8 6
      lib/model/sharedpullerstate.go

+ 8 - 6
lib/model/sharedpullerstate.go

@@ -280,13 +280,15 @@ func (s *sharedPullerState) finalClose() (bool, error) {
 	}
 
 	if s.fd != nil {
-		// This is our error if we weren't errored before. Otherwise we
-		// keep the earlier error.
-		if fsyncErr := s.fd.Sync(); fsyncErr != nil && s.err == nil {
-			s.err = fsyncErr
+		if err := s.fd.Sync(); err != nil {
+			// Sync() is nice if it works but not worth failing the
+			// operation over if it fails.
+			l.Debugf("fsync %q failed: %v", s.tempName, err)
 		}
-		if closeErr := s.fd.Close(); closeErr != nil && s.err == nil {
-			s.err = closeErr
+
+		if err := s.fd.Close(); err != nil && s.err == nil {
+			// This is our error as we weren't errored before.
+			s.err = err
 		}
 		s.fd = nil
 	}