Переглянути джерело

devicemapper: fix suspend removed device

when doing devices.cancelDeferredRemoval, the device could have been removed
and return ErrEnxio, but it continue to check if it is need to do suspend.
doSuspend := devinfo != nil && devinfo.Exists != 0 uses a devinfo which is
get before devices.cancelDeferredRemoval(baseInfo), it is outdate, the device
has been removed and there is no need to do suspend. If do suspend it will return
devicemapper: Error running deviceSuspend dm_task_run failed.

Signed-off-by: Lei Jitang <leijitang@huawei.com>
Lei Jitang 8 роки тому
батько
коміт
6e25bb2ed6
1 змінених файлів з 1 додано та 0 видалено
  1. 1 0
      daemon/graphdriver/devmapper/deviceset.go

+ 1 - 0
daemon/graphdriver/devmapper/deviceset.go

@@ -858,6 +858,7 @@ func (devices *DeviceSet) takeSnapshot(hash string, baseInfo *devInfo, size uint
 				if err != devicemapper.ErrEnxio {
 					return err
 				}
+				devinfo = nil
 			} else {
 				defer devices.deactivateDevice(baseInfo)
 			}