소스 검색

all: Ignore Sync errors on directories (fixes #4432)

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4449
Audrius Butkevicius 8 년 전
부모
커밋
622b614f31
3개의 변경된 파일3개의 추가작업 그리고 19개의 파일을 삭제
  1. 1 1
      lib/config/folderconfiguration.go
  2. 0 16
      lib/fs/basicfs.go
  3. 2 2
      lib/model/rwfolder.go

+ 1 - 1
lib/config/folderconfiguration.go

@@ -96,7 +96,7 @@ func (f *FolderConfiguration) CreateMarker() error {
 		}
 		if dir, err := fs.Open("."); err == nil {
 			if serr := dir.Sync(); err != nil {
-				l.Infof("fsync %q failed: %v", ".", serr)
+				l.Debugln("fsync %q failed: %v", ".", serr)
 			}
 		} else {
 			l.Infof("fsync %q failed: %v", ".", err)

+ 0 - 16
lib/fs/basicfs.go

@@ -317,22 +317,6 @@ func (f fsFile) Stat() (FileInfo, error) {
 	return fsFileInfo{info}, nil
 }
 
-func (f fsFile) Sync() error {
-	err := f.File.Sync()
-	if err == nil || runtime.GOOS != "windows" {
-		return err
-	}
-	// On Windows, fsyncing a directory returns a "handle is invalid" (localized so can't check for strings)
-	// So we swallow that and let things go through in order not to have to add
-	// a separate way of syncing directories versus files.
-	if stat, serr := f.Stat(); serr != nil {
-		return serr
-	} else if stat.IsDir() {
-		return nil
-	}
-	return err
-}
-
 // fsFileInfo implements the fs.FileInfo interface on top of an os.FileInfo.
 type fsFileInfo struct {
 	os.FileInfo

+ 2 - 2
lib/model/rwfolder.go

@@ -1543,11 +1543,11 @@ func (f *sendReceiveFolder) dbUpdaterRoutine() {
 			delete(changedDirs, dir)
 			fd, err := f.fs.Open(dir)
 			if err != nil {
-				l.Infof("fsync %q failed: %v", dir, err)
+				l.Debugf("fsync %q failed: %v", dir, err)
 				continue
 			}
 			if err := fd.Sync(); err != nil {
-				l.Infof("fsync %q failed: %v", dir, err)
+				l.Debugf("fsync %q failed: %v", dir, err)
 			}
 			fd.Close()
 		}