Browse Source

devmapper: Take care of some review comments

Took care of some review comments from crosbymichael.

v2:
- Return "err = nil" if file deviceset-metadata file does not exist.
- Use json.Decoder() interface for loading deviceset metadata.

v3:
- Reverted back to json marshal interface in loadDeviceSetMetaData().

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Vivek Goyal 10 years ago
parent
commit
15c74bebc1
1 changed files with 15 additions and 17 deletions
  1. 15 17
      daemon/graphdriver/devmapper/deviceset.go

+ 15 - 17
daemon/graphdriver/devmapper/deviceset.go

@@ -32,6 +32,8 @@ var (
 	DefaultThinpBlockSize       uint32 = 128 // 64K = 128 512b sectors
 	DefaultThinpBlockSize       uint32 = 128 // 64K = 128 512b sectors
 )
 )
 
 
+const deviceSetMetaFile string = "deviceset-metadata"
+
 type DevInfo struct {
 type DevInfo struct {
 	Hash          string     `json:"-"`
 	Hash          string     `json:"-"`
 	DeviceId      int        `json:"device_id"`
 	DeviceId      int        `json:"device_id"`
@@ -139,7 +141,7 @@ func (devices *DeviceSet) metadataFile(info *DevInfo) string {
 }
 }
 
 
 func (devices *DeviceSet) deviceSetMetaFile() string {
 func (devices *DeviceSet) deviceSetMetaFile() string {
-	return path.Join(devices.metadataDir(), "deviceset-metadata")
+	return path.Join(devices.metadataDir(), deviceSetMetaFile)
 }
 }
 
 
 func (devices *DeviceSet) oldMetadataFile() string {
 func (devices *DeviceSet) oldMetadataFile() string {
@@ -236,8 +238,7 @@ func (devices *DeviceSet) saveMetadata(info *DevInfo) error {
 	if err != nil {
 	if err != nil {
 		return fmt.Errorf("Error encoding metadata to json: %s", err)
 		return fmt.Errorf("Error encoding metadata to json: %s", err)
 	}
 	}
-	err = devices.writeMetaFile(jsonData, devices.metadataFile(info))
-	if err != nil {
+	if err := devices.writeMetaFile(jsonData, devices.metadataFile(info)); err != nil {
 		return err
 		return err
 	}
 	}
 
 
@@ -552,29 +553,24 @@ func (devices *DeviceSet) ResizePool(size int64) error {
 func (devices *DeviceSet) loadDeviceSetMetaData() error {
 func (devices *DeviceSet) loadDeviceSetMetaData() error {
 	jsonData, err := ioutil.ReadFile(devices.deviceSetMetaFile())
 	jsonData, err := ioutil.ReadFile(devices.deviceSetMetaFile())
 	if err != nil {
 	if err != nil {
-		return nil
-	}
-
-	if err := json.Unmarshal(jsonData, devices); err != nil {
-		return nil
+		// For backward compatibility return success if file does
+		// not exist.
+		if os.IsNotExist(err) {
+			return nil
+		}
+		return err
 	}
 	}
 
 
-	return nil
+	return json.Unmarshal(jsonData, devices)
 }
 }
 
 
 func (devices *DeviceSet) saveDeviceSetMetaData() error {
 func (devices *DeviceSet) saveDeviceSetMetaData() error {
 	jsonData, err := json.Marshal(devices)
 	jsonData, err := json.Marshal(devices)
-
 	if err != nil {
 	if err != nil {
 		return fmt.Errorf("Error encoding metadata to json: %s", err)
 		return fmt.Errorf("Error encoding metadata to json: %s", err)
 	}
 	}
 
 
-	err = devices.writeMetaFile(jsonData, devices.deviceSetMetaFile())
-	if err != nil {
-		return err
-	}
-
-	return nil
+	return devices.writeMetaFile(jsonData, devices.deviceSetMetaFile())
 }
 }
 
 
 func (devices *DeviceSet) initDevmapper(doInit bool) error {
 func (devices *DeviceSet) initDevmapper(doInit bool) error {
@@ -710,7 +706,9 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
 
 
 	// Right now this loads only NextDeviceId. If there is more metatadata
 	// Right now this loads only NextDeviceId. If there is more metatadata
 	// down the line, we might have to move it earlier.
 	// down the line, we might have to move it earlier.
-	devices.loadDeviceSetMetaData()
+	if err = devices.loadDeviceSetMetaData(); err != nil {
+		return err
+	}
 
 
 	// Setup the base image
 	// Setup the base image
 	if doInit {
 	if doInit {