|
@@ -1689,7 +1689,7 @@ func (devices *DeviceSet) enableDeferredRemovalDeletion() error {
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
-func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
|
|
|
|
+func (devices *DeviceSet) initDevmapper(doInit bool) (retErr error) {
|
|
// give ourselves to libdm as a log handler
|
|
// give ourselves to libdm as a log handler
|
|
devicemapper.LogInit(devices)
|
|
devicemapper.LogInit(devices)
|
|
|
|
|
|
@@ -1871,6 +1871,14 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
|
|
if err := devicemapper.CreatePool(devices.getPoolName(), dataFile, metadataFile, devices.thinpBlockSize); err != nil {
|
|
if err := devicemapper.CreatePool(devices.getPoolName(), dataFile, metadataFile, devices.thinpBlockSize); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
+ defer func() {
|
|
|
|
+ if retErr != nil {
|
|
|
|
+ err = devices.deactivatePool()
|
|
|
|
+ if err != nil {
|
|
|
|
+ logrus.Warnf("devmapper: Failed to deactivatePool: %v", err)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
}
|
|
}
|
|
|
|
|
|
// Pool already exists and caller did not pass us a pool. That means
|
|
// Pool already exists and caller did not pass us a pool. That means
|