зеркало из https://github.com/microsoft/docker.git
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>
This commit is contained in:
Родитель
c345c53859
Коммит
8451d03d8e
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
Загрузка…
Ссылка в новой задаче