Merge pull request #56 from shykes/creack-dm-plugin

Use variable to call functions in devmapper_wrapper + some formatting
This commit is contained in:
Victor Vieux 2013-11-22 14:05:59 -08:00
commit a26f9183bd
3 changed files with 33 additions and 41 deletions

View File

@ -187,7 +187,7 @@ func AttachLoopDevice(filename string) (*osFile, error) {
} }
func getLoopbackBackingFile(file *osFile) (uint64, uint64, error) { func getLoopbackBackingFile(file *osFile) (uint64, uint64, error) {
dev, inode, err := dmGetLoopbackBackingFile(file.Fd()) dev, inode, err := DmGetLoopbackBackingFile(file.Fd())
if err != 0 { if err != 0 {
return 0, 0, ErrGetLoopbackBackingFile return 0, 0, ErrGetLoopbackBackingFile
} }
@ -195,8 +195,7 @@ func getLoopbackBackingFile(file *osFile) (uint64, uint64, error) {
} }
func LoopbackSetCapacity(file *osFile) error { func LoopbackSetCapacity(file *osFile) error {
err := dmLoopbackSetCapacity(file.Fd()) if err := DmLoopbackSetCapacity(file.Fd()); err != 0 {
if err != 0 {
return ErrLoopbackSetCapacity return ErrLoopbackSetCapacity
} }
return nil return nil

View File

@ -148,26 +148,28 @@ type (
) )
var ( var (
DmAttachLoopDevice = dmAttachLoopDeviceFct DmAttachLoopDevice = dmAttachLoopDeviceFct
DmGetBlockSize = dmGetBlockSizeFct DmGetBlockSize = dmGetBlockSizeFct
DmGetLibraryVersion = dmGetLibraryVersionFct DmGetLibraryVersion = dmGetLibraryVersionFct
DmGetNextTarget = dmGetNextTargetFct DmGetNextTarget = dmGetNextTargetFct
DmLogInitVerbose = dmLogInitVerboseFct DmLogInitVerbose = dmLogInitVerboseFct
DmSetDevDir = dmSetDevDirFct DmSetDevDir = dmSetDevDirFct
DmTaskAddTarget = dmTaskAddTargetFct DmTaskAddTarget = dmTaskAddTargetFct
DmTaskCreate = dmTaskCreateFct DmTaskCreate = dmTaskCreateFct
DmTaskDestroy = dmTaskDestroyFct DmTaskDestroy = dmTaskDestroyFct
DmTaskGetInfo = dmTaskGetInfoFct DmTaskGetInfo = dmTaskGetInfoFct
DmTaskRun = dmTaskRunFct DmTaskRun = dmTaskRunFct
DmTaskSetAddNode = dmTaskSetAddNodeFct DmTaskSetAddNode = dmTaskSetAddNodeFct
DmTaskSetCookie = dmTaskSetCookieFct DmTaskSetCookie = dmTaskSetCookieFct
DmTaskSetMessage = dmTaskSetMessageFct DmTaskSetMessage = dmTaskSetMessageFct
DmTaskSetName = dmTaskSetNameFct DmTaskSetName = dmTaskSetNameFct
DmTaskSetRo = dmTaskSetRoFct DmTaskSetRo = dmTaskSetRoFct
DmTaskSetSector = dmTaskSetSectorFct DmTaskSetSector = dmTaskSetSectorFct
DmUdevWait = dmUdevWaitFct DmUdevWait = dmUdevWaitFct
GetBlockSize = getBlockSizeFct GetBlockSize = getBlockSizeFct
LogWithErrnoInit = logWithErrnoInitFct LogWithErrnoInit = logWithErrnoInitFct
DmGetLoopbackBackingFile = dmGetLoopbackBackingFileFct
DmLoopbackSetCapacity = dmLoopbackSetCapacityFct
) )
func free(p *C.char) { func free(p *C.char) {
@ -238,14 +240,14 @@ func dmTaskAddTargetFct(task *CDmTask,
C.uint64_t(start), C.uint64_t(size), Cttype, Cparams)) C.uint64_t(start), C.uint64_t(size), Cttype, Cparams))
} }
func dmGetLoopbackBackingFile(fd uintptr) (uint64, uint64, sysErrno) { func dmGetLoopbackBackingFileFct(fd uintptr) (uint64, uint64, sysErrno) {
var lo64 C.struct_loop_info64 var lo64 C.struct_loop_info64
_, _, err := sysSyscall(sysSysIoctl, fd, C.LOOP_GET_STATUS64, _, _, err := sysSyscall(sysSysIoctl, fd, C.LOOP_GET_STATUS64,
uintptr(unsafe.Pointer(&lo64))) uintptr(unsafe.Pointer(&lo64)))
return uint64(lo64.lo_device), uint64(lo64.lo_inode), sysErrno(err) return uint64(lo64.lo_device), uint64(lo64.lo_inode), sysErrno(err)
} }
func dmLoopbackSetCapacity(fd uintptr) sysErrno { func dmLoopbackSetCapacityFct(fd uintptr) sysErrno {
_, _, err := sysSyscall(sysSysIoctl, fd, C.LOOP_SET_CAPACITY, 0) _, _, err := sysSyscall(sysSysIoctl, fd, C.LOOP_SET_CAPACITY, 0)
return sysErrno(err) return sysErrno(err)
} }

View File

@ -8,8 +8,6 @@ import (
"path" "path"
) )
var DefaultDriver string
type InitFunc func(root string) (Driver, error) type InitFunc func(root string) (Driver, error)
type Driver interface { type Driver interface {
@ -34,6 +32,7 @@ type Differ interface {
} }
var ( var (
DefaultDriver string
// All registred drivers // All registred drivers
drivers map[string]InitFunc drivers map[string]InitFunc
// Slice of drivers that should be used in an order // Slice of drivers that should be used in an order
@ -64,14 +63,8 @@ func GetDriver(name, home string) (Driver, error) {
return nil, fmt.Errorf("No such driver: %s", name) return nil, fmt.Errorf("No such driver: %s", name)
} }
func New(root string) (Driver, error) { func New(root string) (driver Driver, err error) {
var driver Driver for _, name := range []string{os.Getenv("DOCKER_DRIVER"), DefaultDriver} {
var lastError error
for _, name := range []string{
os.Getenv("DOCKER_DRIVER"),
DefaultDriver,
} {
if name != "" { if name != "" {
return GetDriver(name, root) return GetDriver(name, root)
} }
@ -79,9 +72,8 @@ func New(root string) (Driver, error) {
// Check for priority drivers first // Check for priority drivers first
for _, name := range priority { for _, name := range priority {
driver, lastError = GetDriver(name, root) if driver, err = GetDriver(name, root); err != nil {
if lastError != nil { utils.Debugf("Error loading driver %s: %s", name, err)
utils.Debugf("Error loading driver %s: %s", name, lastError)
continue continue
} }
return driver, nil return driver, nil
@ -89,11 +81,10 @@ func New(root string) (Driver, error) {
// Check all registered drivers if no priority driver is found // Check all registered drivers if no priority driver is found
for _, initFunc := range drivers { for _, initFunc := range drivers {
driver, lastError = initFunc(root) if driver, err = initFunc(root); err != nil {
if lastError != nil {
continue continue
} }
return driver, nil return driver, nil
} }
return nil, lastError return nil, err
} }