diff --git a/components/engine/devmapper/deviceset_devmapper.go b/components/engine/devmapper/deviceset_devmapper.go index 53717f4bd5..72d2664549 100644 --- a/components/engine/devmapper/deviceset_devmapper.go +++ b/components/engine/devmapper/deviceset_devmapper.go @@ -88,6 +88,10 @@ func (devices *DeviceSetDM) hasImage(name string) bool { return err == nil } +// ensureImage creates a sparse file of bytes at the path +// /devicemapper/. +// If the file already exists, it does nothing. +// Either way it returns the full path. func (devices *DeviceSetDM) ensureImage(name string, size int64) (string, error) { dirname := devices.loopbackDir() filename := path.Join(dirname, name) diff --git a/components/engine/devmapper/devmapper.go b/components/engine/devmapper/devmapper.go index 74e172dac8..021661159c 100644 --- a/components/engine/devmapper/devmapper.go +++ b/components/engine/devmapper/devmapper.go @@ -18,6 +18,7 @@ package devmapper #define LOOP_CTL_GET_FREE 0x4C82 #endif +// FIXME: this could easily be rewritten in go char* attach_loop_device(const char *filename, int *loop_fd_out) { struct loop_info64 loopinfo = {0}; @@ -441,6 +442,7 @@ func free(p *C.char) { C.free(unsafe.Pointer(p)) } +// This is the programmatic example of "dmsetup create" func createPool(poolName string, dataFile *os.File, metadataFile *os.File) error { task, err := createTask(DeviceCreate, poolName) if task == nil {