Browse code

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 authored on 2017/06/16 01:12:31
Showing 1 changed files
... ...
@@ -1693,16 +1693,6 @@ func (devices *DeviceSet) initDevmapper(doInit bool) (retErr error) {
1693 1693
 	// give ourselves to libdm as a log handler
1694 1694
 	devicemapper.LogInit(devices)
1695 1695
 
1696
-	version, err := devicemapper.GetDriverVersion()
1697
-	if err != nil {
1698
-		// Can't even get driver version, assume not supported
1699
-		return graphdriver.ErrNotSupported
1700
-	}
1701
-
1702
-	if err := determineDriverCapabilities(version); err != nil {
1703
-		return graphdriver.ErrNotSupported
1704
-	}
1705
-
1706 1696
 	if err := devices.enableDeferredRemovalDeletion(); err != nil {
1707 1697
 		return err
1708 1698
 	}
... ...
@@ -2643,6 +2633,22 @@ func NewDeviceSet(root string, doInit bool, options []string, uidMaps, gidMaps [
2643 2643
 		minFreeSpacePercent:   defaultMinFreeSpacePercent,
2644 2644
 	}
2645 2645
 
2646
+	version, err := devicemapper.GetDriverVersion()
2647
+	if err != nil {
2648
+		// Can't even get driver version, assume not supported
2649
+		return nil, graphdriver.ErrNotSupported
2650
+	}
2651
+
2652
+	if err := determineDriverCapabilities(version); err != nil {
2653
+		return nil, graphdriver.ErrNotSupported
2654
+	}
2655
+
2656
+	if driverDeferredRemovalSupport && devicemapper.LibraryDeferredRemovalSupport {
2657
+		// enable deferred stuff by default
2658
+		enableDeferredDeletion = true
2659
+		enableDeferredRemoval = true
2660
+	}
2661
+
2646 2662
 	foundBlkDiscard := false
2647 2663
 	var lvmSetupConfig directLVMConfig
2648 2664
 	for _, option := range options {