//go:build linux package platform import ( "os" "syscall" ) const ioctlLoopChangeFD = 0x4C08 func loopChangeFD(loopDev, newFile string) error { lf, err := os.OpenFile(loopDev, os.O_RDWR, 0) if err != nil { return err } defer lf.Close() nf, err := os.OpenFile(newFile, os.O_RDONLY, 0) if err != nil { return err } defer nf.Close() _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, lf.Fd(), ioctlLoopChangeFD, nf.Fd()) if errno != 0 { return errno } return nil }