74e35aace0
The loopback logic is not technically exclusive to the devicemapper driver. This reorganizes the code such that the loopback code is usable outside of the devicemapper package and driver. Signed-off-by: Vincent Batts <vbatts@redhat.com>
27 lines
548 B
Go
27 lines
548 B
Go
// +build linux
|
|
|
|
package devicemapper
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
func ioctlBlkGetSize64(fd uintptr) (int64, error) {
|
|
var size int64
|
|
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, BlkGetSize64, uintptr(unsafe.Pointer(&size))); err != 0 {
|
|
return 0, err
|
|
}
|
|
return size, nil
|
|
}
|
|
|
|
func ioctlBlkDiscard(fd uintptr, offset, length uint64) error {
|
|
var r [2]uint64
|
|
r[0] = offset
|
|
r[1] = length
|
|
|
|
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, BlkDiscard, uintptr(unsafe.Pointer(&r[0]))); err != 0 {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|