func DiskUsage()

in internal/disk_stats/disk_stats.go [30:54]


func DiskUsage(path string) (DiskStats, error) {
	fs := unix.Statfs_t{}
	err := unix.Statfs(path, &fs)
	if err != nil {
		return DiskStats{}, err
	}

	all := fs.Blocks * uint64(fs.Bsize) //nolint:gosec
	free := fs.Bfree * uint64(fs.Bsize) //nolint:gosec
	used := all - free
	indexed, err := getIndexSize(path)
	if indexed < 0 || err != nil {
		slog.Error("can not get the index size", "path", path, "error", err)
		indexed = -1
	}

	diskStats := DiskStats{
		All:     all,
		Free:    free,
		Indexed: indexed,
		Used:    used,
	}

	return diskStats, nil
}