From 3da961cb829967bce3cd73af18c5dcc721dbffb0 Mon Sep 17 00:00:00 2001 From: Lei Jitang Date: Wed, 1 Mar 2017 21:58:14 +0800 Subject: [PATCH] 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 Upstream-commit: 6e25bb2ed6560baec4b13930e673c88f1b49de34 Component: engine --- components/engine/daemon/graphdriver/devmapper/deviceset.go | 1 + 1 file changed, 1 insertion(+) diff --git a/components/engine/daemon/graphdriver/devmapper/deviceset.go b/components/engine/daemon/graphdriver/devmapper/deviceset.go index 8b92400384..ba845d4d01 100644 --- a/components/engine/daemon/graphdriver/devmapper/deviceset.go +++ b/components/engine/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) }