diff options
| author | Liu Hua <sdu.liu@huawei.com> | 2017-10-23 21:00:22 +0800 |
|---|---|---|
| committer | Yong Tang <yong.tang.github@outlook.com> | 2018-01-02 18:04:25 +0000 |
| commit | 8451d03d8ef7457f82112179cd3e300c05a08d3d (patch) | |
| tree | 1063432a6db0afee1d9a70053e23cc378f57b21b /pkg/devicemapper | |
| parent | c345c53859a7197deb4722ad4ca5c4a45fab7074 (diff) | |
| download | docker-8451d03d8ef7457f82112179cd3e300c05a08d3d.tar.gz | |
Devicemapper: ignore Nodata errors when delete thin device
if thin device is deteled and the metadata exists, you can not
delete related containers. This patch ignore Nodata errors for
thin device deletion
Signed-off-by: Liu Hua <sdu.liu@huawei.com>
Diffstat (limited to 'pkg/devicemapper')
| -rw-r--r-- | pkg/devicemapper/devmapper.go | 13 | ||||
| -rw-r--r-- | pkg/devicemapper/devmapper_log.go | 3 |
2 files changed, 13 insertions, 3 deletions
diff --git a/pkg/devicemapper/devmapper.go b/pkg/devicemapper/devmapper.go index 48618765fb..c72992f7a1 100644 --- a/pkg/devicemapper/devmapper.go +++ b/pkg/devicemapper/devmapper.go @@ -67,12 +67,14 @@ var ( ErrBusy = errors.New("Device is Busy") ErrDeviceIDExists = errors.New("Device Id Exists") ErrEnxio = errors.New("No such device or address") + ErrEnoData = errors.New("No data available") ) var ( - dmSawBusy bool - dmSawExist bool - dmSawEnxio bool // No Such Device or Address + dmSawBusy bool + dmSawExist bool + dmSawEnxio bool // No Such Device or Address + dmSawEnoData bool // No data available ) type ( @@ -708,10 +710,15 @@ func DeleteDevice(poolName string, deviceID int) error { } dmSawBusy = false + dmSawEnoData = false if err := task.run(); err != nil { if dmSawBusy { return ErrBusy } + if dmSawEnoData { + logrus.Debugf("devicemapper: Device(id: %d) from pool(%s) does not exist", deviceID, poolName) + return nil + } return fmt.Errorf("devicemapper: Error running DeleteDevice %s", err) } return nil diff --git a/pkg/devicemapper/devmapper_log.go b/pkg/devicemapper/devmapper_log.go index f2ac7da87c..1da75101cf 100644 --- a/pkg/devicemapper/devmapper_log.go +++ b/pkg/devicemapper/devmapper_log.go @@ -55,6 +55,9 @@ func DevmapperLogCallback(level C.int, file *C.char, line, dmErrnoOrClass C.int, if strings.Contains(msg, "No such device or address") { dmSawEnxio = true } + if strings.Contains(msg, "No data available") { + dmSawEnoData = true + } } if dmLogger != nil { |
