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
53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
// +build linux
|
|
|
|
package loopback
|
|
|
|
/*
|
|
#include <linux/loop.h> // FIXME: present only for defines, maybe we can remove it?
|
|
|
|
#ifndef LOOP_CTL_GET_FREE
|
|
#define LOOP_CTL_GET_FREE 0x4C82
|
|
#endif
|
|
|
|
#ifndef LO_FLAGS_PARTSCAN
|
|
#define LO_FLAGS_PARTSCAN 8
|
|
#endif
|
|
|
|
*/
|
|
import "C"
|
|
|
|
type loopInfo64 struct {
|
|
loDevice uint64 /* ioctl r/o */
|
|
loInode uint64 /* ioctl r/o */
|
|
loRdevice uint64 /* ioctl r/o */
|
|
loOffset uint64
|
|
loSizelimit uint64 /* bytes, 0 == max available */
|
|
loNumber uint32 /* ioctl r/o */
|
|
loEncryptType uint32
|
|
loEncryptKeySize uint32 /* ioctl w/o */
|
|
loFlags uint32 /* ioctl r/o */
|
|
loFileName [LoNameSize]uint8
|
|
loCryptName [LoNameSize]uint8
|
|
loEncryptKey [LoKeySize]uint8 /* ioctl w/o */
|
|
loInit [2]uint64
|
|
}
|
|
|
|
// IOCTL consts
|
|
const (
|
|
LoopSetFd = C.LOOP_SET_FD
|
|
LoopCtlGetFree = C.LOOP_CTL_GET_FREE
|
|
LoopGetStatus64 = C.LOOP_GET_STATUS64
|
|
LoopSetStatus64 = C.LOOP_SET_STATUS64
|
|
LoopClrFd = C.LOOP_CLR_FD
|
|
LoopSetCapacity = C.LOOP_SET_CAPACITY
|
|
)
|
|
|
|
// LOOP consts.
|
|
const (
|
|
LoFlagsAutoClear = C.LO_FLAGS_AUTOCLEAR
|
|
LoFlagsReadOnly = C.LO_FLAGS_READ_ONLY
|
|
LoFlagsPartScan = C.LO_FLAGS_PARTSCAN
|
|
LoKeySize = C.LO_KEY_SIZE
|
|
LoNameSize = C.LO_NAME_SIZE
|
|
)
|