You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: disk.go
    path of file: ./repos/pyroscope/pkg/util/disk
    
    the code of the file until where you have to start completion: //go:build !windows

package diskutil

import (
	"golang.org/x/sys/unix"
)

type volumeChecker struct {
	min
    
func (v *volumeChecker) HasHighDiskUtilization(path string) (*VolumeStats, error) {
	var stat unix.Statfs_t
	if err := unix.Statfs(path, &stat); err != nil {
		return nil, err
	}

	// available means accessible to the current user, while free means bytes
	// for privileged users. (Linux sometimes reserves some space for root)
	var (
		stats = VolumeStats{
			BytesAvailable: stat.Bavail * uint64(stat.Bsize),
		}
		percentageAvailable = float64(stat.Bavail) / float64(stat.Blocks)
	)

	// if bytes available is bigger than minFreeDisk => not in high disk utilization
	if stats.BytesAvailable >= v.minFreeDisk {
		return &stats, nil
	}

	// no in high disk utilization when more than the constant
	if percentageAvailable > v.minDiskAvailablePercentage {
		return &stats, nil
	}

	stats.HighDiskUtilization = true
	return &stats, nil
}