diff options
author | Jakob Borg <jakob@nym.se> | 2015-08-09 10:38:33 +0200 |
---|---|---|
committer | Jakob Borg <jakob@nym.se> | 2015-08-09 10:38:33 +0200 |
commit | 2bcb57c994d1e8e13f92669c4671af223fe6ccb5 (patch) | |
tree | 7f87b64d3fefa7a69a10ab2e1d9e320b6ad62b0a | |
parent | 6a58033f2bafd9dae5a188a2590f1dd62423fa75 (diff) | |
parent | a2df691c7dcdfef3d3efa7863a8f4ef0f529b17e (diff) |
Merge branch 'pr-2066'
* pr-2066:
Configurable home disk percentage, translations
Add minimum disk free percentage to GUI
Stop folder when running out of disk space (fixes #2057)
21 files changed, 235 insertions, 5 deletions
diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index bd2f7fc55c..33fb3b19a5 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -10,6 +10,10 @@ "Rev": "4f7c2045dbd17b802370e2e6022200468abf02ba" }, { + "ImportPath": "github.com/calmh/du", + "Rev": "3c0690cca16228b97741327b1b6781397afbdb24" + }, + { "ImportPath": "github.com/calmh/logger", "Rev": "c96f6a1a8c7b6bf2f4860c667867d90174799eb2" }, diff --git a/Godeps/_workspace/src/github.com/calmh/du/LICENSE b/Godeps/_workspace/src/github.com/calmh/du/LICENSE new file mode 100644 index 0000000000..cf1ab25da0 --- /dev/null +++ b/Godeps/_workspace/src/github.com/calmh/du/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <http://unlicense.org> diff --git a/Godeps/_workspace/src/github.com/calmh/du/README.md b/Godeps/_workspace/src/github.com/calmh/du/README.md new file mode 100644 index 0000000000..0cb5e5d736 --- /dev/null +++ b/Godeps/_workspace/src/github.com/calmh/du/README.md @@ -0,0 +1,14 @@ +du +== + +Get total and available disk space on a given volume. + +Documentation +------------- + +http://godoc.org/github.com/calmh/du + +License +------- + +Public Domain diff --git a/Godeps/_workspace/src/github.com/calmh/du/cmd/du/main.go b/Godeps/_workspace/src/github.com/calmh/du/cmd/du/main.go new file mode 100644 index 0000000000..3b8b544674 --- /dev/null +++ b/Godeps/_workspace/src/github.com/calmh/du/cmd/du/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" + "log" + "os" + + "github.com/calmh/du" +) + +var KB = int64(1024) + +func main() { + usage, err := du.Get(os.Args[1]) + if err != nil { + log.Fatal(err) + } + fmt.Println("Free:", usage.FreeBytes/(KB*KB), "MiB") + fmt.Println("Available:", usage.AvailBytes/(KB*KB), "MiB") + fmt.Println("Size:", usage.TotalBytes/(KB*KB), "MiB") +} diff --git a/Godeps/_workspace/src/github.com/calmh/du/diskusage.go b/Godeps/_workspace/src/github.com/calmh/du/diskusage.go new file mode 100644 index 0000000000..f6bb975cac --- /dev/null +++ b/Godeps/_workspace/src/github.com/calmh/du/diskusage.go @@ -0,0 +1,8 @@ +package du + +// Usage holds information about total and available storage on a volume. +type Usage struct { + TotalBytes int64 // Size of volume + FreeBytes int64 // Unused size + AvailBytes int64 // Available to a non-privileged user +} diff --git a/Godeps/_workspace/src/github.com/calmh/du/diskusage_posix.go b/Godeps/_workspace/src/github.com/calmh/du/diskusage_posix.go new file mode 100644 index 0000000000..6502bdb684 --- /dev/null +++ b/Godeps/_workspace/src/github.com/calmh/du/diskusage_posix.go @@ -0,0 +1,24 @@ +// +build !windows,!netbsd,!openbsd,!solaris + +package du + +import ( + "path/filepath" + "syscall" +) + +// Get returns the Usage of a given path, or an error if usage data is +// unavailable. +func Get(path string) (Usage, error) { + var stat syscall.Statfs_t + err := syscall.Statfs(filepath.Clean(path), &stat) + if err != nil { + return Usage{}, err + } + u := Usage{ + FreeBytes: int64(stat.Bfree) * int64(stat.Bsize), + TotalBytes: int64(stat.Blocks) * int64(stat.Bsize), + AvailBytes: int64(stat.Bavail) * int64(stat.Bsize), + } + return u, nil +} diff --git a/Godeps/_workspace/src/github.com/calmh/du/diskusage_unsupported.go b/Godeps/_workspace/src/github.com/calmh/du/diskusage_unsupported.go new file mode 100644 index 0000000000..044e77480e --- /dev/null +++ b/Godeps/_workspace/src/github.com/calmh/du/diskusage_unsupported.go @@ -0,0 +1,13 @@ +// +build netbsd openbsd solaris + +package du + +import "errors" + +var ErrUnsupported = errors.New("unsupported platform") + +// Get returns the Usage of a given path, or an error if usage data is +// unavailable. +func Get(path string) (Usage, error) { + return Usage{}, ErrUnsupported +} diff --git a/Godeps/_workspace/src/github.com/calmh/du/diskusage_windows.go b/Godeps/_workspace/src/github.com/calmh/du/diskusage_windows.go new file mode 100644 index 0000000000..6ed5e52e2f --- /dev/null +++ b/Godeps/_workspace/src/github.com/calmh/du/diskusage_windows.go @@ -0,0 +1,27 @@ +package du + +import ( + "syscall" + "unsafe" +) + +// Get returns the Usage of a given path, or an error if usage data is +// unavailable. +func Get(path string) (Usage, error) { + h := syscall.MustLoadDLL("kernel32.dll") + c := h.MustFindProc("GetDiskFreeSpaceExW") + + var u Usage + + ret, _, err := c.Call( + uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))), + uintptr(unsafe.Pointer(&u.FreeBytes)), + uintptr(unsafe.Pointer(&u.TotalBytes)), + uintptr(unsafe.Pointer(&u.AvailBytes))) + + if ret == 0 { + return u, err + } + + return u, nil +} diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 19591880d2..26c3292735 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -837,6 +837,7 @@ func defaultConfig(myName string) config.Configuration { ID: "default", RawPath: locations[locDefFolder], RescanIntervalS: 60, + MinDiskFreePct: 1, Devices: []config.FolderDeviceConfiguration{{DeviceID: myID}}, }, } diff --git a/gui/assets/lang/lang-en.json b/gui/assets/lang/lang-en.json index 3a9f0ee4c7..38d80054c0 100644 --- a/gui/assets/lang/lang-en.json +++ b/gui/assets/lang/lang-en.json @@ -93,6 +93,7 @@ "Major Upgrade": "Major Upgrade", "Maximum Age": "Maximum Age", "Metadata Only": "Metadata Only", + "Minimum Free Disk Space": "Minimum Free Disk Space", "Move to top of queue": "Move to top of queue", "Multi level wildcard (matches multiple directory levels)": "Multi level wildcard (matches multiple directory levels)", "Never": "Never", @@ -120,6 +121,7 @@ "RAM Utilization": "RAM Utilization", "Random": "Random", "Release Notes": "Release Notes", + "Remove": "Remove", "Rescan": "Rescan", "Rescan All": "Rescan All", "Rescan Interval": "Rescan Interval", @@ -176,6 +178,7 @@ "The following items could not be synchronized.": "The following items could not be synchronized.", "The maximum age must be a number and cannot be blank.": "The maximum age must be a number and cannot be blank.", "The maximum time to keep a version (in days, set to 0 to keep versions forever).": "The maximum time to keep a version (in days, set to 0 to keep versions forever).", + "The minimum free disk space percentage must be a non-negative number between 0 and 100 (inclusive).": "The minimum free disk space percentage must be a non-negative number between 0 and 100 (inclusive).", "The number of days must be a number and cannot be blank.": "The number of days must be a number and cannot be blank.", "The number of days to keep files in the trash can. Zero means forever.": "The number of days to keep files in the trash can. Zero means forever.", "The number of old versions to keep, per file.": "The number of old versions to keep, per file.", diff --git a/gui/syncthing/core/syncthingController.js b/gui/syncthing/core/syncthingController.js index 9710880eb1..a104e881ab 100755 --- a/gui/syncthing/core/syncthingController.js +++ b/gui/syncthing/core/syncthingController.js @@ -1057,6 +1057,7 @@ angular.module('syncthing.core') selectedDevices: {} }; $scope.currentFolder.rescanIntervalS = 60; + $scope.currentFolder.minDiskFreePct = 1; $scope.currentFolder.order = "random"; $scope.currentFolder.fileVersioningSelector = "none"; $scope.currentFolder.trashcanClean = 0; @@ -1077,6 +1078,7 @@ angular.module('syncthing.core') id: folder, selectedDevices: {}, rescanIntervalS: 60, + minDiskFreePct: 1, fileVersioningSelector: "none", trashcanClean: 0, simpleKeep: 5, diff --git a/gui/syncthing/folder/editFolderModalView.html b/gui/syncthing/folder/editFolderModalView.html index b30f4c4ca4..51311dec1b 100644 --- a/gui/syncthing/folder/editFolderModalView.html +++ b/gui/syncthing/folder/editFolderModalView.html @@ -37,6 +37,13 @@ <span translate ng-if="!folderEditor.rescanIntervalS.$valid && folderEditor.rescanIntervalS.$dirty">The rescan interval must be a non-negative number of seconds.</span> </p> </div> + <div class="form-group" ng-class="{'has-error': folderEditor.minDiskFreePct.$invalid && folderEditor.minDiskFreePct.$dirty}"> + <label for="minDiskFreePct"><span translate>Minimum Free Disk Space</span> (0-100%)</label> + <input name="minDiskFreePct" id="minDiskFreePct" class="form-control" type="number" ng-model="currentFolder.minDiskFreePct" required min="0" max="100"></input> + <p class="help-block"> + <span translate ng-if="!folderEditor.minDiskFreePct.$valid && folderEditor.minDiskFreePct.$dirty">The minimum free disk space percentage must be a non-negative number between 0 and 100 (inclusive).</span> + </p> + </div> </div> </div> <div class="row"> diff --git a/internal/config/testdata/v11.xml b/internal/config/testdata/v11.xml new file mode 100644 index 0000000000..d6d60999cf --- /dev/null +++ b/internal/config/testdata/v11.xml @@ -0,0 +1,13 @@ +<configuration version="11"> + <folder id="test" path="testdata" ro="true" ignorePerms="false" rescanIntervalS="600" autoNormalize="true"> + <device id="AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR"></device> + <device id="P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2"></device> + <minDiskFreePct>1</minDiskFreePct> + </folder> + <device id="AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR" name="node one" compression="metadata"> + <address>a</address> + </device> + <device id="P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2" name="node two" compression="metadata"> + <address>b</address> + </device> +</configuration> diff --git a/lib/auto/gui.files.go b/lib/auto/gui.files.go index 7d4e8898a6..1eb03ad3f6 100644 --- a/lib/auto/gui.files.go +++ b/lib/auto/gui.files.go @@ -5,7 +5,7 @@ import ( ) const ( - AssetsBuildDate = "Sun, 09 Aug 2015 06:51:37 GMT" + AssetsBuildDate = "Sun, 09 Aug 2015 08:35:46 GMT" ) func Assets() map[string][]byte { @@ -24,7 +24,7 @@ func Assets() map[string][]byte { assets["assets/lang/lang-de.json"], _ = base64.StdEncoding.DecodeString("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") assets["assets/lang/lang-el.json"], _ = base64.StdEncoding.DecodeString("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") assets["assets/lang/lang-en-GB.json"], _ = base64.StdEncoding.DecodeString("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 |