8b5a2050f9
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> Upstream-commit: af597527121c0ad973e9d0ae4f9cf970da1513cc Component: engine
28 lines
548 B
Go
28 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
|
|
}
|