From 54d70735d8a205d0b918e60c11b801239249777c Mon Sep 17 00:00:00 2001 From: Jos Vooges | STH Date: Thu, 27 Aug 2026 07:41:24 +0200 Subject: [PATCH] Fix Linux amd64 Statfs Type cast for media-node disk dedupe build. Co-authored-by: Cursor --- node/media-node/internal/health/disk_unix.go | 13 ++++++------- node/media-node/internal/health/health.go | 7 +++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/node/media-node/internal/health/disk_unix.go b/node/media-node/internal/health/disk_unix.go index 058e330..3121707 100644 --- a/node/media-node/internal/health/disk_unix.go +++ b/node/media-node/internal/health/disk_unix.go @@ -4,18 +4,17 @@ package health import "syscall" -type fsKey struct { - typ int32 - val0 int32 - val1 int32 -} - func diskStat(path string) (total, free uint64, fs fsKey, ok bool) { var st syscall.Statfs_t if err := syscall.Statfs(path, &st); err != nil { return 0, 0, fsKey{}, false } - fs = fsKey{typ: st.Type, val0: st.Fsid.X__val[0], val1: st.Fsid.X__val[1]} + // st.Type is int64 on amd64 / int32 on some arches — always widen. + fs = fsKey{ + typ: int64(st.Type), + val0: st.Fsid.X__val[0], + val1: st.Fsid.X__val[1], + } total = st.Blocks * uint64(st.Bsize) free = st.Bavail * uint64(st.Bsize) return total, free, fs, true diff --git a/node/media-node/internal/health/health.go b/node/media-node/internal/health/health.go index a770afa..d67f3c7 100644 --- a/node/media-node/internal/health/health.go +++ b/node/media-node/internal/health/health.go @@ -5,6 +5,13 @@ import ( "runtime" ) +// fsKey uniquely identifies a mounted filesystem (dedupe across scan roots). +type fsKey struct { + typ int64 + val0 int32 + val1 int32 +} + type Snapshot struct { UptimeSeconds int64 CPUUsagePercent float64