package nfs import ( "crypto/rand" "encoding/binary" "fmt" ) func generateRandomFSID() (uint32, error) { var b [4]byte if _, err := rand.Read(b[:]); err != nil { return 0, fmt.Errorf("crypto/rand read: %w", err) } n := binary.BigEndian.Uint32(b[:]) if n == 0 { n = 1 } return n, nil } func UniqueFSID(used map[uint32]struct{}) (uint32, error) { for i := 0; i < 64; i++ { n, err := generateRandomFSID() if err != nil { return 0, err } if _, dup := used[n]; !dup { return n, nil } } return 0, fmt.Errorf("fsid space exhausted after 64 attempts") }