Fix panic on devicemapper initialization

The ability to save and verify base device UUID (#13896) introduced a
situation where the initialization would panic when removing the device
returns EBUSY.

Functions `verifyBaseDeviceUUID` and `saveBaseDeviceUUID` now take the
lock on the `DeviceSet`, which solves the problem as `removeDevice`
assumes it owns the lock.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: f08989902374a517b1f8e5e0bfd3b4ea59e5ba27
Component: engine
This commit is contained in:
Arnaud Porterie
2015-07-08 09:05:37 -07:00
parent 78101e16cc
commit a095147db9

View File

@ -691,6 +691,9 @@ func getDeviceUUID(device string) (string, error) {
}
func (devices *DeviceSet) verifyBaseDeviceUUID(baseInfo *DevInfo) error {
devices.Lock()
defer devices.Unlock()
if err := devices.activateDeviceIfNeeded(baseInfo); err != nil {
return err
}
@ -710,6 +713,9 @@ func (devices *DeviceSet) verifyBaseDeviceUUID(baseInfo *DevInfo) error {
}
func (devices *DeviceSet) saveBaseDeviceUUID(baseInfo *DevInfo) error {
devices.Lock()
defer devices.Unlock()
if err := devices.activateDeviceIfNeeded(baseInfo); err != nil {
return err
}