github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/daemon/graphdriver/vfs/quota_linux.go (about)

     1  package vfs // import "github.com/docker/docker/daemon/graphdriver/vfs"
     2  
     3  import (
     4  	"github.com/docker/docker/quota"
     5  	"github.com/sirupsen/logrus"
     6  )
     7  
     8  type driverQuota struct {
     9  	quotaCtl *quota.Control
    10  	quotaOpt quota.Quota
    11  }
    12  
    13  func setupDriverQuota(driver *Driver) {
    14  	if quotaCtl, err := quota.NewControl(driver.home); err == nil {
    15  		driver.quotaCtl = quotaCtl
    16  	} else if err != quota.ErrQuotaNotSupported {
    17  		logrus.Warnf("Unable to setup quota: %v\n", err)
    18  	}
    19  }
    20  
    21  func (d *Driver) setQuotaOpt(size uint64) error {
    22  	d.quotaOpt.Size = size
    23  	return nil
    24  }
    25  
    26  func (d *Driver) getQuotaOpt() uint64 {
    27  	return d.quotaOpt.Size
    28  }
    29  
    30  func (d *Driver) setupQuota(dir string, size uint64) error {
    31  	return d.quotaCtl.SetQuota(dir, quota.Quota{Size: size})
    32  }
    33  
    34  func (d *Driver) quotaSupported() bool {
    35  	return d.quotaCtl != nil
    36  }