Files
Loki/internal/ajean/sys_disk_other.go
T
nathaninline 2455d9f402 Purge du code de compatibilite jean, base bbolt et arborescence ajean
- suppression des migrations d'agencement, d'unites et de dossier de donnees
- store bbolt unique (ajean.db) : config, prefs, conversation, cles, drapeaux
- arborescence backends/ bin/ presets/ memory/ models/ workspace/
- plus aucune variable, unite ou asset nomme jean
2026-08-07 16:51:36 +02:00

27 lines
796 B
Go

//go:build !windows
package ajean
// 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)
}