mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-23 11:28:59 +00:00
Merge pull request #2614 from andersonvom/issue-2598
WIP: Consider tempfile when checking for free space (fixes #2598)
This commit is contained in:
commit
c7aec839ae
@ -969,25 +969,11 @@ func (p *rwFolder) handleFile(file protocol.FileInfo, copyChan chan<- copyBlocks
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.checkFreeSpace {
|
|
||||||
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.folder, 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{
|
|
||||||
"folder": p.folder,
|
|
||||||
"item": file.Name,
|
|
||||||
"type": "file",
|
|
||||||
"action": "update",
|
|
||||||
})
|
|
||||||
|
|
||||||
scanner.PopulateOffsets(file.Blocks)
|
scanner.PopulateOffsets(file.Blocks)
|
||||||
|
|
||||||
reused := 0
|
reused := 0
|
||||||
var blocks []protocol.BlockInfo
|
var blocks []protocol.BlockInfo
|
||||||
|
var blocksSize int64
|
||||||
|
|
||||||
// Check for an old temporary file which might have some blocks we could
|
// Check for an old temporary file which might have some blocks we could
|
||||||
// reuse.
|
// reuse.
|
||||||
@ -1007,6 +993,7 @@ func (p *rwFolder) handleFile(file protocol.FileInfo, copyChan chan<- copyBlocks
|
|||||||
_, ok := existingBlocks[block.String()]
|
_, ok := existingBlocks[block.String()]
|
||||||
if !ok {
|
if !ok {
|
||||||
blocks = append(blocks, block)
|
blocks = append(blocks, block)
|
||||||
|
blocksSize += int64(block.Size)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1021,8 +1008,24 @@ func (p *rwFolder) handleFile(file protocol.FileInfo, copyChan chan<- copyBlocks
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
blocks = file.Blocks
|
blocks = file.Blocks
|
||||||
|
blocksSize = file.Size()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if p.checkFreeSpace {
|
||||||
|
if free, err := osutil.DiskFreeBytes(p.dir); err == nil && free < blocksSize {
|
||||||
|
l.Warnf(`Folder "%s": insufficient disk space in %s for %s: have %.2f MiB, need %.2f MiB`, p.folder, p.dir, file.Name, float64(free)/1024/1024, float64(blocksSize)/1024/1024)
|
||||||
|
p.newError(file.Name, errors.New("insufficient space"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
events.Default.Log(events.ItemStarted, map[string]string{
|
||||||
|
"folder": p.folder,
|
||||||
|
"item": file.Name,
|
||||||
|
"type": "file",
|
||||||
|
"action": "update",
|
||||||
|
})
|
||||||
|
|
||||||
s := sharedPullerState{
|
s := sharedPullerState{
|
||||||
file: file,
|
file: file,
|
||||||
folder: p.folder,
|
folder: p.folder,
|
||||||
|
Loading…
Reference in New Issue
Block a user