瀏覽代碼

devmapper: Create new helper function for device and snap creation

Create two new helper functions for device and snap device creation. These
functions will not only create the device and also register the device.

Again, makes the code structure better and keeps all transaction logic
contained to functions instead of spilling over into functions like
setupBaseImage or AddDevice().

Just the code reorganization. No functionality change.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Vivek Goyal 10 年之前
父節點
當前提交
ad9118c696
共有 1 個文件被更改,包括 46 次插入30 次删除
  1. 46 30
      daemon/graphdriver/devmapper/deviceset.go

+ 46 - 30
daemon/graphdriver/devmapper/deviceset.go

@@ -427,6 +427,28 @@ func (devices *DeviceSet) createDevice(deviceId *int) error {
 	return nil
 	return nil
 }
 }
 
 
+func (devices *DeviceSet) createRegisterDevice(hash string) (*DevInfo, error) {
+	deviceId := devices.NextDeviceId
+	if err := devices.createDevice(&deviceId); err != nil {
+		return nil, err
+	}
+
+	transactionId := devices.allocateTransactionId()
+	log.Debugf("Registering device (id %v) with FS size %v", deviceId, devices.baseFsSize)
+	info, err := devices.registerDevice(deviceId, hash, devices.baseFsSize, transactionId)
+	if err != nil {
+		_ = devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
+		return nil, err
+	}
+
+	if err := devices.updatePoolTransactionId(); err != nil {
+		devices.unregisterDevice(deviceId, hash)
+		devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
+		return nil, err
+	}
+	return info, nil
+}
+
 func (devices *DeviceSet) createSnapDevice(baseInfo *DevInfo, deviceId *int) error {
 func (devices *DeviceSet) createSnapDevice(baseInfo *DevInfo, deviceId *int) error {
 	log.Debugf("[deviceset] createSnapDevice() DeviceId=%d", *deviceId)
 	log.Debugf("[deviceset] createSnapDevice() DeviceId=%d", *deviceId)
 	defer log.Debugf("[deviceset] createSnapDevice() END DeviceId=%d", *deviceId)
 	defer log.Debugf("[deviceset] createSnapDevice() END DeviceId=%d", *deviceId)
@@ -448,6 +470,28 @@ func (devices *DeviceSet) createSnapDevice(baseInfo *DevInfo, deviceId *int) err
 	return nil
 	return nil
 }
 }
 
 
+func (devices *DeviceSet) createRegisterSnapDevice(hash string, baseInfo *DevInfo) error {
+	deviceId := devices.NextDeviceId
+	if err := devices.createSnapDevice(baseInfo, &deviceId); err != nil {
+		log.Debugf("Error creating snap device: %s", err)
+		return err
+	}
+
+	transactionId := devices.allocateTransactionId()
+	if _, err := devices.registerDevice(deviceId, hash, baseInfo.Size, transactionId); err != nil {
+		devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
+		log.Debugf("Error registering device: %s", err)
+		return err
+	}
+
+	if err := devices.updatePoolTransactionId(); err != nil {
+		devices.unregisterDevice(deviceId, hash)
+		devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
+		return err
+	}
+	return nil
+}
+
 func (devices *DeviceSet) loadMetadata(hash string) *DevInfo {
 func (devices *DeviceSet) loadMetadata(hash string) *DevInfo {
 	info := &DevInfo{Hash: hash, devices: devices}
 	info := &DevInfo{Hash: hash, devices: devices}
 
 
@@ -494,22 +538,8 @@ func (devices *DeviceSet) setupBaseImage() error {
 	log.Debugf("Initializing base device-mapper thin volume")
 	log.Debugf("Initializing base device-mapper thin volume")
 
 
 	// Create initial device
 	// Create initial device
-	deviceId := devices.NextDeviceId
-	if err := devices.createDevice(&deviceId); err != nil {
-		return err
-	}
-
-	transactionId := devices.allocateTransactionId()
-	log.Debugf("Registering base device (id %v) with FS size %v", deviceId, devices.baseFsSize)
-	info, err := devices.registerDevice(deviceId, "", devices.baseFsSize, transactionId)
+	info, err := devices.createRegisterDevice("")
 	if err != nil {
 	if err != nil {
-		_ = devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
-		return err
-	}
-
-	if err := devices.updatePoolTransactionId(); err != nil {
-		devices.unregisterDevice(deviceId, "")
-		devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
 		return err
 		return err
 	}
 	}
 
 
@@ -826,24 +856,10 @@ func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
 		return fmt.Errorf("device %s already exists", hash)
 		return fmt.Errorf("device %s already exists", hash)
 	}
 	}
 
 
-	deviceId := devices.NextDeviceId
-	if err := devices.createSnapDevice(baseInfo, &deviceId); err != nil {
-		log.Debugf("Error creating snap device: %s", err)
-		return err
-	}
-
-	transactionId := devices.allocateTransactionId()
-	if _, err := devices.registerDevice(deviceId, hash, baseInfo.Size, transactionId); err != nil {
-		devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
-		log.Debugf("Error registering device: %s", err)
+	if err := devices.createRegisterSnapDevice(hash, baseInfo); err != nil {
 		return err
 		return err
 	}
 	}
 
 
-	if err := devices.updatePoolTransactionId(); err != nil {
-		devices.unregisterDevice(deviceId, hash)
-		devicemapper.DeleteDevice(devices.getPoolDevName(), deviceId)
-		return err
-	}
 	return nil
 	return nil
 }
 }