mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-23 11:28:59 +00:00
Merge pull request #2270 from calmh/diskspaceagain
Don't require free disk space when we might only update metadata
This commit is contained in:
commit
8779f93746
@ -212,6 +212,12 @@ func (p *rwFolder) Serve() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := p.model.CheckFolderHealth(p.folder); err != nil {
|
||||||
|
l.Infoln("Skipping folder", p.folder, "pull due to folder error:", err)
|
||||||
|
p.pullTimer.Reset(nextPullIntv)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
p.model.fmut.RLock()
|
p.model.fmut.RLock()
|
||||||
curIgnores := p.model.folderIgnores[p.folder]
|
curIgnores := p.model.folderIgnores[p.folder]
|
||||||
p.model.fmut.RUnlock()
|
p.model.fmut.RUnlock()
|
||||||
@ -451,7 +457,6 @@ func (p *rwFolder) pullerIteration(ignores *ignore.Matcher) int {
|
|||||||
// !!!
|
// !!!
|
||||||
|
|
||||||
changed := 0
|
changed := 0
|
||||||
pullFileSize := int64(0)
|
|
||||||
|
|
||||||
fileDeletions := map[string]protocol.FileInfo{}
|
fileDeletions := map[string]protocol.FileInfo{}
|
||||||
dirDeletions := []protocol.FileInfo{}
|
dirDeletions := []protocol.FileInfo{}
|
||||||
@ -500,7 +505,6 @@ func (p *rwFolder) pullerIteration(ignores *ignore.Matcher) int {
|
|||||||
default:
|
default:
|
||||||
// A new or changed file or symlink. This is the only case where we
|
// A new or changed file or symlink. This is the only case where we
|
||||||
// do stuff concurrently in the background
|
// do stuff concurrently in the background
|
||||||
pullFileSize += file.Size()
|
|
||||||
p.queue.Push(file.Name, file.Size(), file.Modified)
|
p.queue.Push(file.Name, file.Size(), file.Modified)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,16 +512,6 @@ func (p *rwFolder) pullerIteration(ignores *ignore.Matcher) int {
|
|||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
// Check if we are able to store all files on disk. Only perform this
|
|
||||||
// check if there is a minimum free space threshold set on the folder.
|
|
||||||
folderCfg := p.model.cfg.Folders()[p.folder]
|
|
||||||
if folderCfg.MinDiskFreePct > 0 && pullFileSize > 0 {
|
|
||||||
if free, err := osutil.DiskFreeBytes(folderCfg.Path()); err == nil && free < pullFileSize {
|
|
||||||
l.Warnf(`Folder "%s": insufficient disk space available to pull %d files (%.2f MiB)`, p.folder, changed, float64(pullFileSize)/1024/1024)
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reorder the file queue according to configuration
|
// Reorder the file queue according to configuration
|
||||||
|
|
||||||
switch p.order {
|
switch p.order {
|
||||||
@ -970,6 +964,12 @@ func (p *rwFolder) handleFile(file protocol.FileInfo, copyChan chan<- copyBlocks
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if free, err := osutil.DiskFreeBytes(p.dir); err == nil && free < file.Size() {
|
||||||
|
l.Warnf(`Folder "%s": insufficient disk space in %s for %s: have %.2f MiB, need %.2f MiB`, p.dir, file.Name, float64(free)/1024/1024, float64(file.Size())/1024/1024)
|
||||||
|
p.newError(file.Name, errors.New("insufficient space"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
events.Default.Log(events.ItemStarted, map[string]string{
|
events.Default.Log(events.ItemStarted, map[string]string{
|
||||||
"folder": p.folder,
|
"folder": p.folder,
|
||||||
"item": file.Name,
|
"item": file.Name,
|
||||||
|
Loading…
Reference in New Issue
Block a user