Browse code

pkg/devicemapper: cleanup removeDevice differences

Fixes failure on RemoveDevice when host is AUFS, and running
devicemapper test docker-in-docker

https://gist.github.com/tonistiigi/59559cbfb3f2df26b29c

Signed-off-by: Vincent Batts <vbatts@redhat.com>

Vincent Batts authored on 2014/11/14 07:20:24
Showing 1 changed files
... ...
@@ -62,7 +62,7 @@ var (
62 62
 	ErrSetDevDir              = errors.New("dm_set_dev_dir failed")
63 63
 	ErrGetLibraryVersion      = errors.New("dm_get_library_version failed")
64 64
 	ErrCreateRemoveTask       = errors.New("Can't create task of type DeviceRemove")
65
-	ErrRunRemoveDevice        = errors.New("running removeDevice failed")
65
+	ErrRunRemoveDevice        = errors.New("running RemoveDevice failed")
66 66
 	ErrInvalidAddNode         = errors.New("Invalide AddNoce type")
67 67
 	ErrGetLoopbackBackingFile = errors.New("Unable to get loopback backing file")
68 68
 	ErrLoopbackSetCapacity    = errors.New("Unable set loopback capacity")
... ...
@@ -296,18 +296,27 @@ func GetLibraryVersion() (string, error) {
296 296
 
297 297
 // Useful helper for cleanup
298 298
 func RemoveDevice(name string) error {
299
-	// TODO(vbatts) just use the other removeDevice()
300
-	task := TaskCreate(DeviceRemove)
299
+	log.Debugf("[devmapper] RemoveDevice START")
300
+	defer log.Debugf("[devmapper] RemoveDevice END")
301
+	task, err := createTask(DeviceRemove, name)
301 302
 	if task == nil {
302
-		return ErrCreateRemoveTask
303
-	}
304
-	if err := task.SetName(name); err != nil {
305
-		log.Debugf("Can't set task name %s", name)
306 303
 		return err
307 304
 	}
308
-	if err := task.Run(); err != nil {
309
-		return ErrRunRemoveDevice
305
+
306
+	var cookie uint = 0
307
+	if err := task.SetCookie(&cookie, 0); err != nil {
308
+		return fmt.Errorf("Can not set cookie: %s", err)
310 309
 	}
310
+
311
+	if err = task.Run(); err != nil {
312
+		if dmSawBusy {
313
+			return ErrBusy
314
+		}
315
+		return fmt.Errorf("Error running RemoveDevice %s", err)
316
+	}
317
+
318
+	UdevWait(cookie)
319
+
311 320
 	return nil
312 321
 }
313 322
 
... ...
@@ -568,23 +577,6 @@ func DeleteDevice(poolName string, deviceId int) error {
568 568
 	return nil
569 569
 }
570 570
 
571
-func removeDevice(name string) error {
572
-	log.Debugf("[devmapper] RemoveDevice START")
573
-	defer log.Debugf("[devmapper] RemoveDevice END")
574
-	task, err := createTask(DeviceRemove, name)
575
-	if task == nil {
576
-		return err
577
-	}
578
-	dmSawBusy = false
579
-	if err = task.Run(); err != nil {
580
-		if dmSawBusy {
581
-			return ErrBusy
582
-		}
583
-		return fmt.Errorf("Error running RemoveDevice %s", err)
584
-	}
585
-	return nil
586
-}
587
-
588 571
 func ActivateDevice(poolName string, name string, deviceId int, size uint64) error {
589 572
 	task, err := createTask(DeviceCreate, name)
590 573
 	if task == nil {