From ecadd564b196990ec5088953ff11b2d5b5cee73e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=BE=B7?= Date: Wed, 22 Aug 2018 17:31:07 +0800 Subject: [PATCH] Fix volume capacity when run in MacOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈德 --- src/adminserver/systeminfo/imagestorage/driver.go | 2 +- .../systeminfo/imagestorage/filesystem/driver.go | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/adminserver/systeminfo/imagestorage/driver.go b/src/adminserver/systeminfo/imagestorage/driver.go index c1bec8f0c..1d2039307 100644 --- a/src/adminserver/systeminfo/imagestorage/driver.go +++ b/src/adminserver/systeminfo/imagestorage/driver.go @@ -17,7 +17,7 @@ package imagestorage // GlobalDriver is a global image storage driver var GlobalDriver Driver -// Capacity holds information about capaticy of image storage +// Capacity holds information about capacity of image storage type Capacity struct { // total size(byte) Total uint64 `json:"total"` diff --git a/src/adminserver/systeminfo/imagestorage/filesystem/driver.go b/src/adminserver/systeminfo/imagestorage/filesystem/driver.go index f2484f06d..c22f2f6e0 100644 --- a/src/adminserver/systeminfo/imagestorage/filesystem/driver.go +++ b/src/adminserver/systeminfo/imagestorage/filesystem/driver.go @@ -16,6 +16,7 @@ package filesystem import ( "os" + "reflect" "syscall" storage "github.com/vmware/harbor/src/adminserver/systeminfo/imagestorage" @@ -56,8 +57,18 @@ func (d *driver) Cap() (*storage.Capacity, error) { return nil, err } + bSize := uint64(stat.Bsize) + field := reflect.ValueOf(&stat).Elem().FieldByName("Frsize") + if field.IsValid() { + if field.Kind() == reflect.Uint64 { + bSize = field.Uint() + } else { + bSize = uint64(field.Int()) + } + } + return &storage.Capacity{ - Total: stat.Blocks * uint64(stat.Bsize), - Free: stat.Bavail * uint64(stat.Bsize), + Total: stat.Blocks * bSize, + Free: stat.Bavail * bSize, }, nil }