diff --git a/daemon/graphdriver/vfs/driver.go b/daemon/graphdriver/vfs/driver.go index d2e71dc9c8..4bf26e4095 100644 --- a/daemon/graphdriver/vfs/driver.go +++ b/daemon/graphdriver/vfs/driver.go @@ -17,6 +17,8 @@ func init() { graphdriver.Register("vfs", Init) } +// Init returns a new VFS driver. +// This sets the home directory for the driver and returns NaiveDiffDriver. func Init(home string, options []string) (graphdriver.Driver, error) { d := &Driver{ home: home, @@ -24,6 +26,10 @@ func Init(home string, options []string) (graphdriver.Driver, error) { return graphdriver.NaiveDiffDriver(d), nil } +// Driver holds information about the driver, home directory of the driver. +// Driver implements graphdriver.ProtoDriver. It uses only basic vfs operations. +// In order to support layering, files are copied from the parent layer into the new layer. There is no copy-on-write support. +// Driver must be wrapped in NaiveDiffDriver to be used as a graphdriver.Driver type Driver struct { home string } @@ -32,18 +38,22 @@ func (d *Driver) String() string { return "vfs" } +// Status is used for implementing the graphdriver.ProtoDriver interface. VFS does not currently have any status information. func (d *Driver) Status() [][2]string { return nil } +// GetMetadata is used for implementing the graphdriver.ProtoDriver interface. VFS does not currently have any meta data. func (d *Driver) GetMetadata(id string) (map[string]string, error) { return nil, nil } +// Cleanup is used to implement graphdriver.ProtoDriver. There is no cleanup required for this driver. func (d *Driver) Cleanup() error { return nil } +// Create prepares the filesystem for the VFS driver and copies the directory for the given id under the parent. func (d *Driver) Create(id, parent string) error { dir := d.dir(id) if err := system.MkdirAll(filepath.Dir(dir), 0700); err != nil { @@ -73,6 +83,7 @@ func (d *Driver) dir(id string) string { return filepath.Join(d.home, "dir", filepath.Base(id)) } +// Remove deletes the content from the directory for a given id. func (d *Driver) Remove(id string) error { if _, err := os.Stat(d.dir(id)); err != nil { return err @@ -80,6 +91,7 @@ func (d *Driver) Remove(id string) error { return os.RemoveAll(d.dir(id)) } +// Get returns the directory for the given id. func (d *Driver) Get(id, mountLabel string) (string, error) { dir := d.dir(id) if st, err := os.Stat(dir); err != nil { @@ -90,12 +102,14 @@ func (d *Driver) Get(id, mountLabel string) (string, error) { return dir, nil } +// Put is a noop for vfs that return nil for the error, since this driver has no runtime resources to clean up. func (d *Driver) Put(id string) error { // The vfs driver has no runtime resources (e.g. mounts) // to clean up, so we don't need anything here return nil } +// Exists checks to see if the directory exists for the given id. func (d *Driver) Exists(id string) bool { _, err := os.Stat(d.dir(id)) return err == nil diff --git a/hack/make/validate-lint b/hack/make/validate-lint index 04e9905f69..66a40d8c71 100644 --- a/hack/make/validate-lint +++ b/hack/make/validate-lint @@ -35,6 +35,7 @@ packages=( docker dockerinit graph + daemon/graphdriver/vfs image integration-cli pkg/broadcastwriter