From 4299af1c639e43f73fa601dfb8b5f3f857a13718 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Tue, 12 Feb 2019 13:25:11 +0100 Subject: [PATCH] lib/config, lib/model: Use path from locations to check disk space for db (#5525) --- lib/config/folderconfiguration.go | 2 +- lib/config/size.go | 2 +- lib/config/wrapper.go | 15 --------------- lib/model/folder.go | 8 ++++++-- 4 files changed, 8 insertions(+), 19 deletions(-) diff --git a/lib/config/folderconfiguration.go b/lib/config/folderconfiguration.go index f02203e62..56917f348 100644 --- a/lib/config/folderconfiguration.go +++ b/lib/config/folderconfiguration.go @@ -278,7 +278,7 @@ func (f *FolderConfiguration) CheckAvailableSpace(req int64) error { } usage.Free -= req if usage.Free > 0 { - if err := checkFreeSpace(f.MinDiskFree, usage); err == nil { + if err := CheckFreeSpace(f.MinDiskFree, usage); err == nil { return nil } } diff --git a/lib/config/size.go b/lib/config/size.go index 35e983fd6..60081b7c9 100644 --- a/lib/config/size.go +++ b/lib/config/size.go @@ -78,7 +78,7 @@ func (s *Size) ParseDefault(str string) error { return err } -func checkFreeSpace(req Size, usage fs.Usage) error { +func CheckFreeSpace(req Size, usage fs.Usage) error { val := req.BaseValue() if val <= 0 { return nil diff --git a/lib/config/wrapper.go b/lib/config/wrapper.go index 827ad06b2..1dda3dac8 100644 --- a/lib/config/wrapper.go +++ b/lib/config/wrapper.go @@ -7,14 +7,11 @@ package config import ( - "fmt" "os" - "path/filepath" "sync/atomic" "time" "github.com/syncthing/syncthing/lib/events" - "github.com/syncthing/syncthing/lib/fs" "github.com/syncthing/syncthing/lib/osutil" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/sync" @@ -488,15 +485,3 @@ func (w *Wrapper) AddOrUpdatePendingFolder(id, label string, device protocol.Dev panic("bug: adding pending folder for non-existing device") } - -// CheckHomeFreeSpace returns nil if the home disk has the required amount of -// free space, or if home disk free space checking is disabled. -func (w *Wrapper) CheckHomeFreeSpace() error { - path := filepath.Dir(w.ConfigPath()) - if usage, err := fs.NewFilesystem(fs.FilesystemTypeBasic, path).Usage("."); err == nil { - if err = checkFreeSpace(w.Options().MinHomeDiskFree, usage); err != nil { - return fmt.Errorf("insufficient space on home disk (%v): %v", path, err) - } - } - return nil -} diff --git a/lib/model/folder.go b/lib/model/folder.go index d337376eb..73ec362d5 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -21,6 +21,7 @@ import ( "github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/fs" "github.com/syncthing/syncthing/lib/ignore" + "github.com/syncthing/syncthing/lib/locations" "github.com/syncthing/syncthing/lib/osutil" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/scanner" @@ -269,8 +270,11 @@ func (f *folder) getHealthError() error { return err } - if err := f.model.cfg.CheckHomeFreeSpace(); err != nil { - return err + dbPath := locations.Get(locations.Database) + if usage, err := fs.NewFilesystem(fs.FilesystemTypeBasic, dbPath).Usage("."); err == nil { + if err = config.CheckFreeSpace(f.model.cfg.Options().MinHomeDiskFree, usage); err != nil { + return fmt.Errorf("insufficient space on disk for database (%v): %v", dbPath, err) + } } return nil