Merge pull request #35827 from kolyshkin/vfs-quota
Fix VFS vs quota regression
diff --git a/daemon/graphdriver/quota/projectquota.go b/daemon/graphdriver/quota/projectquota.go
index e25965b..8efe5cd 100644
--- a/daemon/graphdriver/quota/projectquota.go
+++ b/daemon/graphdriver/quota/projectquota.go
@@ -350,11 +350,17 @@
backingFsBlockDev := path.Join(home, "backingFsBlockDev")
// Re-create just in case someone copied the home directory over to a new device
unix.Unlink(backingFsBlockDev)
- if err := unix.Mknod(backingFsBlockDev, unix.S_IFBLK|0600, int(stat.Dev)); err != nil {
+ err := unix.Mknod(backingFsBlockDev, unix.S_IFBLK|0600, int(stat.Dev))
+ switch err {
+ case nil:
+ return backingFsBlockDev, nil
+
+ case unix.ENOSYS:
+ return "", ErrQuotaNotSupported
+
+ default:
return "", fmt.Errorf("Failed to mknod %s: %v", backingFsBlockDev, err)
}
-
- return backingFsBlockDev, nil
}
func hasQuotaSupport(backingFsBlockDev string) (bool, error) {
diff --git a/daemon/graphdriver/vfs/driver.go b/daemon/graphdriver/vfs/driver.go
index a85d6a7..5f9cad4 100644
--- a/daemon/graphdriver/vfs/driver.go
+++ b/daemon/graphdriver/vfs/driver.go
@@ -35,9 +35,7 @@
return nil, err
}
- if err := setupDriverQuota(d); err != nil {
- return nil, err
- }
+ setupDriverQuota(d)
return graphdriver.NewNaiveDiffDriver(d, uidMaps, gidMaps), nil
}
diff --git a/daemon/graphdriver/vfs/quota_linux.go b/daemon/graphdriver/vfs/quota_linux.go
index d40d0d1..f871bef 100644
--- a/daemon/graphdriver/vfs/quota_linux.go
+++ b/daemon/graphdriver/vfs/quota_linux.go
@@ -1,19 +1,20 @@
package vfs
-import "github.com/docker/docker/daemon/graphdriver/quota"
+import (
+ "github.com/docker/docker/daemon/graphdriver/quota"
+ "github.com/sirupsen/logrus"
+)
type driverQuota struct {
quotaCtl *quota.Control
}
-func setupDriverQuota(driver *Driver) error {
+func setupDriverQuota(driver *Driver) {
if quotaCtl, err := quota.NewControl(driver.home); err == nil {
driver.quotaCtl = quotaCtl
} else if err != quota.ErrQuotaNotSupported {
- return err
+ logrus.Warnf("Unable to setup quota: %v\n", err)
}
-
- return nil
}
func (d *Driver) setupQuota(dir string, size uint64) error {