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>
This commit is contained in:
Vivek Goyal 2014-11-07 16:53:34 -05:00
parent 0f57c90245
commit 15c74bebc1
1 changed files with 15 additions and 17 deletions

View File

@ -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 := devices.writeMetaFile(jsonData, devices.metadataFile(info)); err != nil {
if 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 // For backward compatibility return success if file does
// not exist.
if os.IsNotExist(err) {
return nil
}
return err
} }
if err := json.Unmarshal(jsonData, devices); err != nil { return json.Unmarshal(jsonData, devices)
return nil
}
return nil
} }
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()) return devices.writeMetaFile(jsonData, devices.deviceSetMetaFile())
if err != nil {
return err
}
return nil
} }
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 {