浏览代码

Ensures files get closed properly. Closes #6213

Docker-DCO-1.1-Signed-off-by: Tibor Vass <teabee89@gmail.com> (github: tiborvass)
Tibor Vass 11 年之前
父节点
当前提交
b1ac791d84
共有 2 个文件被更改,包括 3 次插入22 次删除
  1. 1 1
      daemon/graphdriver/devmapper/README.md
  2. 2 21
      daemon/graphdriver/devmapper/deviceset.go

+ 1 - 1
daemon/graphdriver/devmapper/README.md

@@ -4,7 +4,7 @@
 
 
 The device mapper graphdriver uses the device mapper thin provisioning
 The device mapper graphdriver uses the device mapper thin provisioning
 module (dm-thinp) to implement CoW snapshots. For each devicemapper
 module (dm-thinp) to implement CoW snapshots. For each devicemapper
-graph locaion (typically `/var/lib/docker/devicemapper`, $graph below)
+graph location (typically `/var/lib/docker/devicemapper`, $graph below)
 a thin pool is created based on two block devices, one for data and
 a thin pool is created based on two block devices, one for data and
 one for metadata.  By default these block devices are created
 one for metadata.  By default these block devices are created
 automatically by using loopback mounts of automatically creates sparse
 automatically by using loopback mounts of automatically creates sparse

+ 2 - 21
daemon/graphdriver/devmapper/deviceset.go

@@ -307,7 +307,6 @@ func (devices *DeviceSet) createFilesystem(info *DevInfo) error {
 		err = fmt.Errorf("Unsupported filesystem type %s", devices.filesystem)
 		err = fmt.Errorf("Unsupported filesystem type %s", devices.filesystem)
 	}
 	}
 	if err != nil {
 	if err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
@@ -317,12 +316,10 @@ func (devices *DeviceSet) createFilesystem(info *DevInfo) error {
 func (devices *DeviceSet) initMetaData() error {
 func (devices *DeviceSet) initMetaData() error {
 	_, _, _, params, err := getStatus(devices.getPoolName())
 	_, _, _, params, err := getStatus(devices.getPoolName())
 	if err != nil {
 	if err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
 	if _, err := fmt.Sscanf(params, "%d", &devices.TransactionId); err != nil {
 	if _, err := fmt.Sscanf(params, "%d", &devices.TransactionId); err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 	devices.NewTransactionId = devices.TransactionId
 	devices.NewTransactionId = devices.TransactionId
@@ -331,7 +328,6 @@ func (devices *DeviceSet) initMetaData() error {
 
 
 	jsonData, err := ioutil.ReadFile(devices.oldMetadataFile())
 	jsonData, err := ioutil.ReadFile(devices.oldMetadataFile())
 	if err != nil && !os.IsNotExist(err) {
 	if err != nil && !os.IsNotExist(err) {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
@@ -339,7 +335,6 @@ func (devices *DeviceSet) initMetaData() error {
 		m := MetaData{Devices: make(map[string]*DevInfo)}
 		m := MetaData{Devices: make(map[string]*DevInfo)}
 
 
 		if err := json.Unmarshal(jsonData, &m); err != nil {
 		if err := json.Unmarshal(jsonData, &m); err != nil {
-			utils.Debugf("\n--->Err: %s\n", err)
 			return err
 			return err
 		}
 		}
 
 
@@ -389,7 +384,6 @@ func (devices *DeviceSet) setupBaseImage() error {
 	if oldInfo != nil && !oldInfo.Initialized {
 	if oldInfo != nil && !oldInfo.Initialized {
 		utils.Debugf("Removing uninitialized base image")
 		utils.Debugf("Removing uninitialized base image")
 		if err := devices.deleteDevice(oldInfo); err != nil {
 		if err := devices.deleteDevice(oldInfo); err != nil {
-			utils.Debugf("\n--->Err: %s\n", err)
 			return err
 			return err
 		}
 		}
 	}
 	}
@@ -400,7 +394,6 @@ func (devices *DeviceSet) setupBaseImage() error {
 
 
 	// Create initial device
 	// Create initial device
 	if err := createDevice(devices.getPoolDevName(), &id); err != nil {
 	if err := createDevice(devices.getPoolDevName(), &id); err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
@@ -411,26 +404,22 @@ func (devices *DeviceSet) setupBaseImage() error {
 	info, err := devices.registerDevice(id, "", devices.baseFsSize)
 	info, err := devices.registerDevice(id, "", devices.baseFsSize)
 	if err != nil {
 	if err != nil {
 		_ = deleteDevice(devices.getPoolDevName(), id)
 		_ = deleteDevice(devices.getPoolDevName(), id)
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
 	utils.Debugf("Creating filesystem on base device-manager snapshot")
 	utils.Debugf("Creating filesystem on base device-manager snapshot")
 
 
 	if err = devices.activateDeviceIfNeeded(info); err != nil {
 	if err = devices.activateDeviceIfNeeded(info); err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
 	if err := devices.createFilesystem(info); err != nil {
 	if err := devices.createFilesystem(info); err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
 	info.Initialized = true
 	info.Initialized = true
 	if err = devices.saveMetadata(info); err != nil {
 	if err = devices.saveMetadata(info); err != nil {
 		info.Initialized = false
 		info.Initialized = false
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 
 
@@ -610,16 +599,15 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
 
 
 			dataFile, err = attachLoopDevice(data)
 			dataFile, err = attachLoopDevice(data)
 			if err != nil {
 			if err != nil {
-				utils.Debugf("\n--->Err: %s\n", err)
 				return err
 				return err
 			}
 			}
-			defer dataFile.Close()
 		} else {
 		} else {
 			dataFile, err = os.OpenFile(devices.dataDevice, os.O_RDWR, 0600)
 			dataFile, err = os.OpenFile(devices.dataDevice, os.O_RDWR, 0600)
 			if err != nil {
 			if err != nil {
 				return err
 				return err
 			}
 			}
 		}
 		}
+		defer dataFile.Close()
 
 
 		if devices.metadataDevice == "" {
 		if devices.metadataDevice == "" {
 			// Make sure the sparse images exist in <root>/devicemapper/metadata
 			// Make sure the sparse images exist in <root>/devicemapper/metadata
@@ -642,19 +630,17 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
 
 
 			metadataFile, err = attachLoopDevice(metadata)
 			metadataFile, err = attachLoopDevice(metadata)
 			if err != nil {
 			if err != nil {
-				utils.Debugf("\n--->Err: %s\n", err)
 				return err
 				return err
 			}
 			}
-			defer metadataFile.Close()
 		} else {
 		} else {
 			metadataFile, err = os.OpenFile(devices.metadataDevice, os.O_RDWR, 0600)
 			metadataFile, err = os.OpenFile(devices.metadataDevice, os.O_RDWR, 0600)
 			if err != nil {
 			if err != nil {
 				return err
 				return err
 			}
 			}
 		}
 		}
+		defer metadataFile.Close()
 
 
 		if err := createPool(devices.getPoolName(), dataFile, metadataFile); err != nil {
 		if err := createPool(devices.getPoolName(), dataFile, metadataFile); err != nil {
-			utils.Debugf("\n--->Err: %s\n", err)
 			return err
 			return err
 		}
 		}
 	}
 	}
@@ -663,7 +649,6 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
 	// load the transaction id and migrate old metadata
 	// load the transaction id and migrate old metadata
 	if !createdLoopback {
 	if !createdLoopback {
 		if err = devices.initMetaData(); err != nil {
 		if err = devices.initMetaData(); err != nil {
-			utils.Debugf("\n--->Err: %s\n", err)
 			return err
 			return err
 		}
 		}
 	}
 	}
@@ -775,7 +760,6 @@ func (devices *DeviceSet) deactivatePool() error {
 	devname := devices.getPoolDevName()
 	devname := devices.getPoolDevName()
 	devinfo, err := getInfo(devname)
 	devinfo, err := getInfo(devname)
 	if err != nil {
 	if err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 	if devinfo.Exists != 0 {
 	if devinfo.Exists != 0 {
@@ -797,12 +781,10 @@ func (devices *DeviceSet) deactivateDevice(info *DevInfo) error {
 
 
 	devinfo, err := getInfo(info.Name())
 	devinfo, err := getInfo(info.Name())
 	if err != nil {
 	if err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 	if devinfo.Exists != 0 {
 	if devinfo.Exists != 0 {
 		if err := devices.removeDeviceAndWait(info.Name()); err != nil {
 		if err := devices.removeDeviceAndWait(info.Name()); err != nil {
-			utils.Debugf("\n--->Err: %s\n", err)
 			return err
 			return err
 		}
 		}
 	}
 	}
@@ -1032,7 +1014,6 @@ func (devices *DeviceSet) UnmountDevice(hash string) error {
 
 
 	utils.Debugf("[devmapper] Unmount(%s)", info.mountPath)
 	utils.Debugf("[devmapper] Unmount(%s)", info.mountPath)
 	if err := syscall.Unmount(info.mountPath, 0); err != nil {
 	if err := syscall.Unmount(info.mountPath, 0); err != nil {
-		utils.Debugf("\n--->Err: %s\n", err)
 		return err
 		return err
 	}
 	}
 	utils.Debugf("[devmapper] Unmount done")
 	utils.Debugf("[devmapper] Unmount done")