From 0cf4f658bac5f3476b46b7faea168f3e30670f1b Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Tue, 7 Jan 2025 15:32:20 +0100 Subject: [PATCH] util(disk): freebsd and netbsd support Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- util/disk/disk_freebsd.go | 22 ++++++++++++++++++++++ util/disk/disk_netbsd.go | 21 +++++++++++++++++++++ util/disk/disk_unix.go | 2 +- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 util/disk/disk_freebsd.go create mode 100644 util/disk/disk_netbsd.go diff --git a/util/disk/disk_freebsd.go b/util/disk/disk_freebsd.go new file mode 100644 index 000000000000..755a834c3993 --- /dev/null +++ b/util/disk/disk_freebsd.go @@ -0,0 +1,22 @@ +//go:build freebsd + +package disk + +import ( + "syscall" + + "github.com/pkg/errors" +) + +func GetDiskStat(root string) (DiskStat, error) { + var st syscall.Statfs_t + if err := syscall.Statfs(root, &st); err != nil { + return DiskStat{}, errors.Wrapf(err, "could not stat fs at %s", root) + } + + return DiskStat{ + Total: int64(st.Bsize) * int64(st.Blocks), + Free: int64(st.Bsize) * int64(st.Bfree), + Available: int64(st.Bsize) * int64(st.Bavail), + }, nil +} diff --git a/util/disk/disk_netbsd.go b/util/disk/disk_netbsd.go new file mode 100644 index 000000000000..ffb3370a9652 --- /dev/null +++ b/util/disk/disk_netbsd.go @@ -0,0 +1,21 @@ +//go:build netbsd + +package disk + +import ( + "github.com/pkg/errors" + "golang.org/x/sys/unix" +) + +func GetDiskStat(root string) (DiskStat, error) { + var st unix.Statvfs_t + if err := unix.Statvfs(root, &st); err != nil { + return DiskStat{}, errors.Wrapf(err, "could not stat fs at %s", root) + } + + return DiskStat{ + Total: int64(st.Frsize) * int64(st.Blocks), + Free: int64(st.Frsize) * int64(st.Bfree), + Available: int64(st.Frsize) * int64(st.Bavail), + }, nil +} diff --git a/util/disk/disk_unix.go b/util/disk/disk_unix.go index 47e6cb4390a0..8680fb9b2218 100644 --- a/util/disk/disk_unix.go +++ b/util/disk/disk_unix.go @@ -1,4 +1,4 @@ -//go:build !windows && !openbsd +//go:build !windows && !freebsd && !netbsd && !openbsd package disk