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 }