//go:build !windows package main import ( "fmt" "syscall" ) func (s *FileStore) DiskStatus() (DiskStatus, error) { var stat syscall.Statfs_t if err := syscall.Statfs(s.root, &stat); err != nil { return DiskStatus{}, err } if stat.Bsize <= 0 { return DiskStatus{}, fmt.Errorf("invalid filesystem block size") } total := stat.Blocks * uint64(stat.Bsize) free := stat.Bavail * uint64(stat.Bsize) return DiskStatus{TotalBytes: total, FreeBytes: free, UsedBytes: total - free}, nil }