Files
Loki/internal/loki/sys_disk_other.go
Loki de6551a153 Rebaptise AJEAN en Loki (fork, lignée conservée)
- module github.com/R0m1k3/Loki, cmd/loki, internal/loki (package loki)
- LOKI_HOME, LOKI_MODEL_DIRS, LOKI_SERVICE, LOKI_DL_CONNS ; /etc/loki ;
  units loki-engine / loki-ui ; binaire et aide CLI
- updateRepo pointe sur R0m1k3/Loki (l'auto-update ne tirera plus les
  binaires AJEAN amont)

Conservé à l'identique : le domaine ajean.link (service de tunnel amont),
les littéraux de migration 0.7.x (migrate_07.go), RELEASE_NOTES.md et
LICENSE (historique et licence de l'amont).

go build/vet/test : verts.
2026-08-14 21:33:15 +00:00

27 lines
795 B
Go

//go:build !windows
package loki
// sys_disk_other.go — espace libre d'un système de fichiers via statfs(2).
// Bavail (et pas Bfree) : les blocs réservés à root ne sont pas utilisables pour
// poser un .gguf de 40 Go.
import "syscall"
// diskFreeAt renvoie les octets libres du système de fichiers contenant dir, ou
// -1 si la mesure échoue. dir doit exister (l'appelant remonte les parents au
// besoin).
func diskFreeAt(dir string) int64 {
var st syscall.Statfs_t
if err := syscall.Statfs(dir, &st); err != nil {
return -1
}
// Les types de Bavail/Bsize diffèrent selon l'OS (int64 sous Linux, uint64
// et uint32 sous macOS) : on passe par uint64 avant de multiplier.
free := uint64(st.Bavail) * uint64(st.Bsize)
if free > 1<<62 {
return -1
}
return int64(free)
}