diff --git a/weed/stats/disk_notsupported.go b/weed/stats/disk_notsupported.go index 1da714c73..418164546 100644 --- a/weed/stats/disk_notsupported.go +++ b/weed/stats/disk_notsupported.go @@ -1,5 +1,5 @@ -//go:build openbsd || netbsd || plan9 || solaris -// +build openbsd netbsd plan9 solaris +//go:build netbsd || plan9 || solaris +// +build netbsd plan9 solaris package stats diff --git a/weed/stats/disk_openbsd.go b/weed/stats/disk_openbsd.go new file mode 100644 index 000000000..8224e626e --- /dev/null +++ b/weed/stats/disk_openbsd.go @@ -0,0 +1,25 @@ +//go:build openbsd +// +build openbsd + +package stats + +import ( + "syscall" + + "github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb" +) + +func fillInDiskStatus(disk *volume_server_pb.DiskStatus) { + fs := syscall.Statfs_t{} + err := syscall.Statfs(disk.Dir, &fs) + if err != nil { + return + } + disk.All = fs.F_blocks * uint64(fs.F_bsize) + disk.Free = fs.F_bfree * uint64(fs.F_bsize) + disk.Used = disk.All - disk.Free + disk.PercentFree = float32((float64(disk.Free) / float64(disk.All)) * 100) + disk.PercentUsed = float32((float64(disk.Used) / float64(disk.All)) * 100) + return +} +