@@ -47,32 +47,29 @@ const (
4747
4848// List of errors returned when using devicemapper.
4949var (
50- ErrTaskRun = errors .New ("dm_task_run failed" )
51- ErrTaskSetName = errors .New ("dm_task_set_name failed" )
52- ErrTaskSetMessage = errors .New ("dm_task_set_message failed" )
53- ErrTaskSetAddNode = errors .New ("dm_task_set_add_node failed" )
54- ErrTaskSetRo = errors .New ("dm_task_set_ro failed" )
55- ErrTaskAddTarget = errors .New ("dm_task_add_target failed" )
56- ErrTaskSetSector = errors .New ("dm_task_set_sector failed" )
57- ErrTaskGetDeps = errors .New ("dm_task_get_deps failed" )
58- ErrTaskGetInfo = errors .New ("dm_task_get_info failed" )
59- ErrTaskGetDriverVersion = errors .New ("dm_task_get_driver_version failed" )
60- ErrTaskDeferredRemove = errors .New ("dm_task_deferred_remove failed" )
61- ErrTaskSetCookie = errors .New ("dm_task_set_cookie failed" )
62- ErrNilCookie = errors .New ("cookie ptr can't be nil" )
63- ErrAttachLoopbackDevice = errors .New ("loopback mounting failed" )
64- ErrGetBlockSize = errors .New ("Can't get block size" )
65- ErrUdevWait = errors .New ("wait on udev cookie failed" )
66- ErrSetDevDir = errors .New ("dm_set_dev_dir failed" )
67- ErrGetLibraryVersion = errors .New ("dm_get_library_version failed" )
68- ErrCreateRemoveTask = errors .New ("Can't create task of type deviceRemove" )
69- ErrRunRemoveDevice = errors .New ("running RemoveDevice failed" )
70- ErrInvalidAddNode = errors .New ("Invalid AddNode type" )
71- ErrGetLoopbackBackingFile = errors .New ("Unable to get loopback backing file" )
72- ErrLoopbackSetCapacity = errors .New ("Unable set loopback capacity" )
73- ErrBusy = errors .New ("Device is Busy" )
74- ErrDeviceIDExists = errors .New ("Device Id Exists" )
75- ErrEnxio = errors .New ("No such device or address" )
50+ ErrTaskRun = errors .New ("dm_task_run failed" )
51+ ErrTaskSetName = errors .New ("dm_task_set_name failed" )
52+ ErrTaskSetMessage = errors .New ("dm_task_set_message failed" )
53+ ErrTaskSetAddNode = errors .New ("dm_task_set_add_node failed" )
54+ ErrTaskSetRo = errors .New ("dm_task_set_ro failed" )
55+ ErrTaskAddTarget = errors .New ("dm_task_add_target failed" )
56+ ErrTaskSetSector = errors .New ("dm_task_set_sector failed" )
57+ ErrTaskGetDeps = errors .New ("dm_task_get_deps failed" )
58+ ErrTaskGetInfo = errors .New ("dm_task_get_info failed" )
59+ ErrTaskGetDriverVersion = errors .New ("dm_task_get_driver_version failed" )
60+ ErrTaskDeferredRemove = errors .New ("dm_task_deferred_remove failed" )
61+ ErrTaskSetCookie = errors .New ("dm_task_set_cookie failed" )
62+ ErrNilCookie = errors .New ("cookie ptr can't be nil" )
63+ ErrGetBlockSize = errors .New ("Can't get block size" )
64+ ErrUdevWait = errors .New ("wait on udev cookie failed" )
65+ ErrSetDevDir = errors .New ("dm_set_dev_dir failed" )
66+ ErrGetLibraryVersion = errors .New ("dm_get_library_version failed" )
67+ ErrCreateRemoveTask = errors .New ("Can't create task of type deviceRemove" )
68+ ErrRunRemoveDevice = errors .New ("running RemoveDevice failed" )
69+ ErrInvalidAddNode = errors .New ("Invalid AddNode type" )
70+ ErrBusy = errors .New ("Device is Busy" )
71+ ErrDeviceIDExists = errors .New ("Device Id Exists" )
72+ ErrEnxio = errors .New ("No such device or address" )
7673)
7774
7875var (
@@ -257,58 +254,6 @@ func (t *Task) getNextTarget(next unsafe.Pointer) (nextPtr unsafe.Pointer, start
257254 start , length , targetType , params
258255}
259256
260- func getLoopbackBackingFile (file * os.File ) (uint64 , uint64 , error ) {
261- loopInfo , err := ioctlLoopGetStatus64 (file .Fd ())
262- if err != nil {
263- logrus .Errorf ("devicemapper: Error get loopback backing file: %s" , err )
264- return 0 , 0 , ErrGetLoopbackBackingFile
265- }
266- return loopInfo .loDevice , loopInfo .loInode , nil
267- }
268-
269- // LoopbackSetCapacity reloads the size for the loopback device.
270- func LoopbackSetCapacity (file * os.File ) error {
271- if err := ioctlLoopSetCapacity (file .Fd (), 0 ); err != nil {
272- logrus .Errorf ("devicemapper: Error loopbackSetCapacity: %s" , err )
273- return ErrLoopbackSetCapacity
274- }
275- return nil
276- }
277-
278- // FindLoopDeviceFor returns a loopback device file for the specified file which
279- // is backing file of a loop back device.
280- func FindLoopDeviceFor (file * os.File ) * os.File {
281- stat , err := file .Stat ()
282- if err != nil {
283- return nil
284- }
285- targetInode := stat .Sys ().(* syscall.Stat_t ).Ino
286- targetDevice := stat .Sys ().(* syscall.Stat_t ).Dev
287-
288- for i := 0 ; true ; i ++ {
289- path := fmt .Sprintf ("/dev/loop%d" , i )
290-
291- file , err := os .OpenFile (path , os .O_RDWR , 0 )
292- if err != nil {
293- if os .IsNotExist (err ) {
294- return nil
295- }
296-
297- // Ignore all errors until the first not-exist
298- // we want to continue looking for the file
299- continue
300- }
301-
302- dev , inode , err := getLoopbackBackingFile (file )
303- if err == nil && dev == targetDevice && inode == targetInode {
304- return file
305- }
306- file .Close ()
307- }
308-
309- return nil
310- }
311-
312257// UdevWait waits for any processes that are waiting for udev to complete the specified cookie.
313258func UdevWait (cookie * uint ) error {
314259 if res := DmUdevWait (* cookie ); res != 1 {
0 commit comments