浏览代码

lib/model: Don't acquire I/O token for send-only pull (#6951)

Simon Frei 5 年之前
父节点
当前提交
6365e6108f
共有 2 个文件被更改,包括 9 次插入12 次删除
  1. 9 5
      lib/model/folder.go
  2. 0 7
      lib/model/folder_sendonly.go

+ 9 - 5
lib/model/folder.go

@@ -344,13 +344,17 @@ func (f *folder) pull() (success bool) {
 		return false
 	}
 
-	f.setState(FolderSyncWaiting)
+	// Send only folder doesn't do any io, it only checks for out-of-sync
+	// items that differ in metadata and updates those.
+	if f.Type != config.FolderTypeSendOnly {
+		f.setState(FolderSyncWaiting)
 
-	if err := f.ioLimiter.takeWithContext(f.ctx, 1); err != nil {
-		f.setError(err)
-		return true
+		if err := f.ioLimiter.takeWithContext(f.ctx, 1); err != nil {
+			f.setError(err)
+			return true
+		}
+		defer f.ioLimiter.give(1)
 	}
-	defer f.ioLimiter.give(1)
 
 	startTime := time.Now()
 

+ 0 - 7
lib/model/folder_sendonly.go

@@ -40,13 +40,6 @@ func (f *sendOnlyFolder) PullErrors() []FileError {
 
 // pull checks need for files that only differ by metadata (no changes on disk)
 func (f *sendOnlyFolder) pull() bool {
-	select {
-	case <-f.initialScanFinished:
-	default:
-		// Once the initial scan finished, a pull will be scheduled
-		return false
-	}
-
 	batch := make([]protocol.FileInfo, 0, maxBatchSizeFiles)
 	batchSizeBytes := 0