From ff41e65d9bf2842a87f3831ecc3b52c3eaa47090 Mon Sep 17 00:00:00 2001 From: CaIon Date: Mon, 2 Feb 2026 00:35:56 +0800 Subject: [PATCH] fix: FreeBSD build failure due to type mismatch in Statfs_t fields (#2793) Explicitly cast Blocks, Bavail, and Bfree to uint64 for cross-platform compatibility, as these fields are int64 on FreeBSD but uint64 on Linux. --- controller/performance_unix.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/controller/performance_unix.go b/controller/performance_unix.go index 3421b6acf..b6ff62d2a 100644 --- a/controller/performance_unix.go +++ b/controller/performance_unix.go @@ -24,10 +24,11 @@ func getDiskSpaceInfo() DiskSpaceInfo { return info } - // 计算磁盘空间 - info.Total = stat.Blocks * uint64(stat.Bsize) - info.Free = stat.Bavail * uint64(stat.Bsize) - info.Used = info.Total - stat.Bfree*uint64(stat.Bsize) + // 计算磁盘空间 (显式转换以兼容 FreeBSD,其字段类型为 int64) + bsize := uint64(stat.Bsize) + info.Total = uint64(stat.Blocks) * bsize + info.Free = uint64(stat.Bavail) * bsize + info.Used = info.Total - uint64(stat.Bfree)*bsize if info.Total > 0 { info.UsedPercent = float64(info.Used) / float64(info.Total) * 100