From d570bc492264ed7edf9a142a4eaa89cdb1f524e6 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 7 Apr 2022 16:15:26 +0200 Subject: [PATCH 1/2] remove deprecated support for overlay(2) on backing FS without d_type (fstype=1) Support for overlay on a backing filesystem without d_type was deprecated in 0abb8dec3f730f3ad2cc9a161c97968a6bfd0631 (Docker 17.12), with an exception for existing installations (0a4e793a3da9ba6d20bccfb83f7c48e20a76d895). That deprecation was nearly 5 years ago, and running without d_type is known to cause serious issues (so users will likely already have run into other problems). This patch removes support for running overlay and overlay2 on these filesystems, returning the error instead of logging it. Signed-off-by: Sebastiaan van Stijn --- daemon/graphdriver/overlay/overlay.go | 6 +----- daemon/graphdriver/overlay2/overlay.go | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/daemon/graphdriver/overlay/overlay.go b/daemon/graphdriver/overlay/overlay.go index 9ef1578395..540daf1077 100644 --- a/daemon/graphdriver/overlay/overlay.go +++ b/daemon/graphdriver/overlay/overlay.go @@ -147,11 +147,7 @@ func Init(home string, options []string, idMap idtools.IdentityMapping) (graphdr return nil, err } if !supportsDType { - if !graphdriver.IsInitialized(home) { - return nil, overlayutils.ErrDTypeNotSupported("overlay", backingFs) - } - // allow running without d_type only for existing setups (#27443) - logrus.WithField("storage-driver", "overlay").Warn(overlayutils.ErrDTypeNotSupported("overlay", backingFs)) + return nil, overlayutils.ErrDTypeNotSupported("overlay", backingFs) } currentID := idtools.CurrentIdentity() diff --git a/daemon/graphdriver/overlay2/overlay.go b/daemon/graphdriver/overlay2/overlay.go index 0f18eaf20f..3a3267467f 100644 --- a/daemon/graphdriver/overlay2/overlay.go +++ b/daemon/graphdriver/overlay2/overlay.go @@ -156,11 +156,7 @@ func Init(home string, options []string, idMap idtools.IdentityMapping) (graphdr return nil, err } if !supportsDType { - if !graphdriver.IsInitialized(home) { - return nil, overlayutils.ErrDTypeNotSupported("overlay2", backingFs) - } - // allow running without d_type only for existing setups (#27443) - logger.Warn(overlayutils.ErrDTypeNotSupported("overlay2", backingFs)) + return nil, overlayutils.ErrDTypeNotSupported("overlay2", backingFs) } cur := idtools.CurrentIdentity() From 2bc07370ec2f6e3ed80d53484e300cee1e24d13c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 7 Apr 2022 16:21:31 +0200 Subject: [PATCH 2/2] daemon/graphdriver: remove unused graphdriver.IsInitialized() It's no longer used, and has no external consumers. Signed-off-by: Sebastiaan van Stijn --- daemon/graphdriver/driver.go | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/daemon/graphdriver/driver.go b/daemon/graphdriver/driver.go index 3372b1358e..06f088fa73 100644 --- a/daemon/graphdriver/driver.go +++ b/daemon/graphdriver/driver.go @@ -294,18 +294,6 @@ func scanPriorDrivers(root string) map[string]bool { return driversMap } -// IsInitialized checks if the driver's home-directory exists and is non-empty. -func IsInitialized(driverHome string) bool { - _, err := os.Stat(driverHome) - if os.IsNotExist(err) { - return false - } - if err != nil { - logrus.Warnf("graphdriver.IsInitialized: stat failed: %v", err) - } - return !isEmptyDir(driverHome) -} - // isEmptyDir checks if a directory is empty. It is used to check if prior // storage-driver directories exist. If an error occurs, it also assumes the // directory is not empty (which preserves the behavior _before_ this check