Merge pull request #372 from thaJeztah/backport-vfs-quota

[17.12] Fix VFS vs quota regression
This commit is contained in:
Andrew Hsu
2018-02-12 18:44:41 -08:00
committed by GitHub
3 changed files with 16 additions and 11 deletions
@@ -350,11 +350,17 @@ func makeBackingFsDev(home string) (string, error) {
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) {
@@ -35,9 +35,7 @@ func Init(home string, options []string, uidMaps, gidMaps []idtools.IDMap) (grap
return nil, err
}
if err := setupDriverQuota(d); err != nil {
return nil, err
}
setupDriverQuota(d)
return graphdriver.NewNaiveDiffDriver(d, uidMaps, gidMaps), nil
}
@@ -2,20 +2,21 @@
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 {