diff --git a/cmd/bd/daemon_health_solaris.go b/cmd/bd/daemon_health_solaris.go new file mode 100644 index 00000000..fba21385 --- /dev/null +++ b/cmd/bd/daemon_health_solaris.go @@ -0,0 +1,23 @@ +//go:build illumos || solaris + +package main + +import ( + "golang.org/x/sys/unix" +) + +// checkDiskSpace returns the available disk space in MB for the given path. +// Returns (availableMB, true) on success, (0, false) on failure. +func checkDiskSpace(path string) (uint64, bool) { + var stat unix.Statvfs_t + if err := unix.Statvfs(path, &stat); err != nil { + return 0, false + } + + // Calculate available space in bytes, then convert to MB. + // On Solaris/illumos, Frsize is the fragment size (fundamental block size). + availableBytes := stat.Bavail * stat.Frsize + availableMB := availableBytes / (1024 * 1024) + + return availableMB, true +} diff --git a/cmd/bd/daemon_health_unix.go b/cmd/bd/daemon_health_unix.go index 4ba292d0..52e18f24 100644 --- a/cmd/bd/daemon_health_unix.go +++ b/cmd/bd/daemon_health_unix.go @@ -1,4 +1,4 @@ -//go:build !windows && !wasm && !freebsd +//go:build !windows && !wasm && !freebsd && !illumos && !solaris package main