Version: v0.7.1 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Dec 6, 2013 License: Apache-2.0 Imports: 18 Imported by: 0




View Source
const (
	BlkGetSize64 = C.BLKGETSIZE64

	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

FIXME: Make sure the values are defined in C IOCTL consts

View Source
const (
	LoFlagsReadOnly  = C.LO_FLAGS_READ_ONLY
	LoKeySize        = C.LO_KEY_SIZE
	LoNameSize       = C.LO_NAME_SIZE


View Source
var (
	DefaultDataLoopbackSize     int64  = 100 * 1024 * 1024 * 1024
	DefaultMetaDataLoopbackSize int64  = 2 * 1024 * 1024 * 1024
	DefaultBaseFsSize           uint64 = 10 * 1024 * 1024 * 1024
View Source
var (
	ErrTaskRun                = errors.New("dm_task_run failed")
	ErrTaskSetName            = errors.New("dm_task_set_name failed")
	ErrTaskSetMessage         = errors.New("dm_task_set_message failed")
	ErrTaskSetAddNode         = errors.New("dm_task_set_add_node failed")
	ErrTaskSetRo              = errors.New("dm_task_set_ro failed")
	ErrTaskAddTarget          = errors.New("dm_task_add_target failed")
	ErrTaskSetSector          = errors.New("dm_task_set_sector failed")
	ErrTaskGetInfo            = errors.New("dm_task_get_info failed")
	ErrTaskSetCookie          = errors.New("dm_task_set_cookie failed")
	ErrNilCookie              = errors.New("cookie ptr can't be nil")
	ErrAttachLoopbackDevice   = errors.New("loopback mounting failed")
	ErrGetBlockSize           = errors.New("Can't get block size")
	ErrUdevWait               = errors.New("wait on udev cookie failed")
	ErrSetDevDir              = errors.New("dm_set_dev_dir failed")
	ErrGetLibraryVersion      = errors.New("dm_get_library_version failed")
	ErrCreateRemoveTask       = errors.New("Can't create task of type DeviceRemove")
	ErrRunRemoveDevice        = errors.New("running removeDevice failed")
	ErrInvalidAddNode         = errors.New("Invalide AddNoce type")
	ErrGetLoopbackBackingFile = errors.New("Unable to get loopback backing file")
	ErrLoopbackSetCapacity    = errors.New("Unable set loopback capacity")
View Source
var (
	DmGetLibraryVersion = dmGetLibraryVersionFct
	DmGetNextTarget     = dmGetNextTargetFct
	DmLogInitVerbose    = dmLogInitVerboseFct
	DmSetDevDir         = dmSetDevDirFct
	DmTaskAddTarget     = dmTaskAddTargetFct
	DmTaskCreate        = dmTaskCreateFct
	DmTaskDestroy       = dmTaskDestroyFct
	DmTaskGetInfo       = dmTaskGetInfoFct
	DmTaskRun           = dmTaskRunFct
	DmTaskSetAddNode    = dmTaskSetAddNodeFct
	DmTaskSetCookie     = dmTaskSetCookieFct
	DmTaskSetMessage    = dmTaskSetMessageFct
	DmTaskSetName       = dmTaskSetNameFct
	DmTaskSetRo         = dmTaskSetRoFct
	DmTaskSetSector     = dmTaskSetSectorFct
	DmUdevWait          = dmUdevWaitFct
	LogWithErrnoInit    = logWithErrnoInitFct
View Source
var Init = func(home string) (graphdriver.Driver, error) {
	deviceSet, err := NewDeviceSet(home, true)
	if err != nil {
		return nil, err
	d := &Driver{
		DeviceSet: deviceSet,
		home:      home,
	return d, nil
View Source
var Mounted = func(mountpoint string) (bool, error) {
	mntpoint, err := osStat(mountpoint)
	if err != nil {
		if osIsNotExist(err) {
			return false, nil
		return false, err
	parent, err := osStat(filepath.Join(mountpoint, ".."))
	if err != nil {
		return false, err
	mntpointSt := toSysStatT(mntpoint.Sys())
	parentSt := toSysStatT(parent.Sys())
	return mntpointSt.Dev != parentSt.Dev, nil


func DevmapperLogCallback

func DevmapperLogCallback(level, file *C.char, line, dm_errno_or_class, message *C.char)

export DevmapperLogCallback

func FindLoopDeviceFor

func FindLoopDeviceFor(file *osFile) *osFile

func GetBlockDeviceSize

func GetBlockDeviceSize(file *osFile) (uint64, error)

func GetLibraryVersion

func GetLibraryVersion() (string, error)

func LogInitVerbose

func LogInitVerbose(level int)

func LoopbackSetCapacity

func LoopbackSetCapacity(file *osFile) error

func RemoveDevice

func RemoveDevice(name string) error

Useful helper for cleanup

func SetDevDir

func SetDevDir(dir string) error

func UdevWait

func UdevWait(cookie uint) error


type AddNodeType

type AddNodeType int
const (
	AddNodeOnResume AddNodeType = iota

type CDmTask

type CDmTask C.struct_dm_task

type CLoopInfo64

type CLoopInfo64 C.struct_loop_info64

type DevInfo

type DevInfo struct {
	Hash          string `json:"-"`
	DeviceId      int    `json:"device_id"`
	Size          uint64 `json:"size"`
	TransactionId uint64 `json:"transaction_id"`
	Initialized   bool   `json:"initialized"`
	// contains filtered or unexported fields

func (*DevInfo) DevName

func (info *DevInfo) DevName() string

func (*DevInfo) Name

func (info *DevInfo) Name() string

type DevStatus

type DevStatus struct {
	DeviceId            int
	Size                uint64
	TransactionId       uint64
	SizeInSectors       uint64
	MappedSectors       uint64
	HighestMappedSector uint64

type DeviceSet

type DeviceSet struct {

	TransactionId    uint64
	NewTransactionId uint64
	// contains filtered or unexported fields

func NewDeviceSet

func NewDeviceSet(root string, doInit bool) (*DeviceSet, error)

func (*DeviceSet) AddDevice

func (devices *DeviceSet) AddDevice(hash, baseHash string) error

func (*DeviceSet) GetDeviceStatus

func (devices *DeviceSet) GetDeviceStatus(hash string) (*DevStatus, error)

func (*DeviceSet) HasActivatedDevice

func (devices *DeviceSet) HasActivatedDevice(hash string) bool

func (*DeviceSet) HasDevice

func (devices *DeviceSet) HasDevice(hash string) bool

func (*DeviceSet) HasInitializedDevice

func (devices *DeviceSet) HasInitializedDevice(hash string) bool

func (*DeviceSet) List

func (devices *DeviceSet) List() []string

func (*DeviceSet) MountDevice

func (devices *DeviceSet) MountDevice(hash, path string, readOnly bool) error

func (*DeviceSet) RemoveDevice

func (devices *DeviceSet) RemoveDevice(hash string) error

func (*DeviceSet) ResizePool

func (devices *DeviceSet) ResizePool(size int64) error

func (*DeviceSet) Shutdown

func (devices *DeviceSet) Shutdown() error

func (*DeviceSet) Status

func (devices *DeviceSet) Status() *Status

func (*DeviceSet) UnmountDevice

func (devices *DeviceSet) UnmountDevice(hash, path string, deactivate bool) error

type DevmapperLogger

type DevmapperLogger interface {
	// contains filtered or unexported methods

type DiskUsage

type DiskUsage struct {
	Used  uint64
	Total uint64

type Driver

type Driver struct {
	// contains filtered or unexported fields

func (*Driver) Cleanup

func (d *Driver) Cleanup() error

func (*Driver) Create

func (d *Driver) Create(id, parent string) error

func (*Driver) Exists

func (d *Driver) Exists(id string) bool

func (*Driver) Get

func (d *Driver) Get(id string) (string, error)

func (*Driver) Remove

func (d *Driver) Remove(id string) error

func (*Driver) Status

func (d *Driver) Status() [][2]string

func (*Driver) String

func (d *Driver) String() string

type Info

type Info struct {
	Exists        int
	Suspended     int
	LiveTable     int
	InactiveTable int
	OpenCount     int32
	EventNr       uint32
	Major         uint32
	Minor         uint32
	ReadOnly      int
	TargetCount   int32

type LoopInfo64

type LoopInfo64 struct {
	// contains filtered or unexported fields

type MetaData

type MetaData struct {
	Devices map[string]*DevInfo `json:devices`

type Status

type Status struct {
	PoolName         string
	DataLoopback     string
	MetadataLoopback string
	Data             DiskUsage
	Metadata         DiskUsage
	SectorSize       uint64

type Task

type Task struct {
	// contains filtered or unexported fields

func TaskCreate

func TaskCreate(tasktype TaskType) *Task

func (*Task) AddTarget

func (t *Task) AddTarget(start, size uint64, ttype, params string) error

func (*Task) GetInfo

func (t *Task) GetInfo() (*Info, error)

func (*Task) GetNextTarget

func (t *Task) GetNextTarget(next uintptr) (nextPtr uintptr, start uint64,
	length uint64, targetType string, params string)

func (*Task) Run

func (t *Task) Run() error

func (*Task) SetAddNode

func (t *Task) SetAddNode(addNode AddNodeType) error

func (*Task) SetCookie

func (t *Task) SetCookie(cookie *uint, flags uint16) error

func (*Task) SetMessage

func (t *Task) SetMessage(message string) error

func (*Task) SetName

func (t *Task) SetName(name string) error

func (*Task) SetRo

func (t *Task) SetRo() error

func (*Task) SetSector

func (t *Task) SetSector(sector uint64) error

type TaskType

type TaskType int
const (
	DeviceCreate TaskType = iota

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL