소스 검색

Enable dm deferred_* with version check

This enables deferred device deletion/removal by default if the driver
version in the kernel is new enough to support the feature.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Brian Goff 8 년 전
부모
커밋
0dc1a80565
1개의 변경된 파일16개의 추가작업 그리고 10개의 파일을 삭제
  1. 16 10
      daemon/graphdriver/devmapper/deviceset.go

+ 16 - 10
daemon/graphdriver/devmapper/deviceset.go

@@ -1693,16 +1693,6 @@ func (devices *DeviceSet) initDevmapper(doInit bool) (retErr error) {
 	// give ourselves to libdm as a log handler
 	// give ourselves to libdm as a log handler
 	devicemapper.LogInit(devices)
 	devicemapper.LogInit(devices)
 
 
-	version, err := devicemapper.GetDriverVersion()
-	if err != nil {
-		// Can't even get driver version, assume not supported
-		return graphdriver.ErrNotSupported
-	}
-
-	if err := determineDriverCapabilities(version); err != nil {
-		return graphdriver.ErrNotSupported
-	}
-
 	if err := devices.enableDeferredRemovalDeletion(); err != nil {
 	if err := devices.enableDeferredRemovalDeletion(); err != nil {
 		return err
 		return err
 	}
 	}
@@ -2643,6 +2633,22 @@ func NewDeviceSet(root string, doInit bool, options []string, uidMaps, gidMaps [
 		minFreeSpacePercent:   defaultMinFreeSpacePercent,
 		minFreeSpacePercent:   defaultMinFreeSpacePercent,
 	}
 	}
 
 
+	version, err := devicemapper.GetDriverVersion()
+	if err != nil {
+		// Can't even get driver version, assume not supported
+		return nil, graphdriver.ErrNotSupported
+	}
+
+	if err := determineDriverCapabilities(version); err != nil {
+		return nil, graphdriver.ErrNotSupported
+	}
+
+	if driverDeferredRemovalSupport && devicemapper.LibraryDeferredRemovalSupport {
+		// enable deferred stuff by default
+		enableDeferredDeletion = true
+		enableDeferredRemoval = true
+	}
+
 	foundBlkDiscard := false
 	foundBlkDiscard := false
 	var lvmSetupConfig directLVMConfig
 	var lvmSetupConfig directLVMConfig
 	for _, option := range options {
 	for _, option := range options {