docker: github.com/docker/docker/daemon/graphdriver/lcow Index | Files

package lcow

import "github.com/docker/docker/daemon/graphdriver/lcow"

Index

Package Files

lcow.go lcow_svm.go remotefs.go remotefs_file.go remotefs_filedriver.go remotefs_pathdriver.go

Variables

var ErrNotSupported = fmt.Errorf("not supported")

ErrNotSupported is an error for unsupported operations in the remotefs

func InitDriver Uses

func InitDriver(dataRoot string, options []string, _, _ []idtools.IDMap) (graphdriver.Driver, error)

InitDriver returns a new LCOW storage driver.

type Driver Uses

type Driver struct {
    // contains filtered or unexported fields
}

Driver represents an LCOW graph driver.

func (*Driver) ApplyDiff Uses

func (d *Driver) ApplyDiff(id, parent string, diff io.Reader) (int64, error)

ApplyDiff extracts the changeset from the given diff into the layer with the specified id and parent, returning the size of the new layer in bytes. The layer should not be mounted when calling this function. Another way of describing this is that ApplyDiff writes to a new layer (a VHD in LCOW) the contents of a tarstream it's given.

func (*Driver) Changes Uses

func (d *Driver) Changes(id, parent string) ([]archive.Change, error)

Changes produces a list of changes between the specified layer and its parent layer. If parent is "", then all changes will be ADD changes. The layer should not be mounted when calling this function.

func (*Driver) Cleanup Uses

func (d *Driver) Cleanup() error

Cleanup ensures the information the driver stores is properly removed. We use this opportunity to cleanup any -removing folders which may be still left if the daemon was killed while it was removing a layer.

func (*Driver) Create Uses

func (d *Driver) Create(id, parent string, opts *graphdriver.CreateOpts) error

Create creates the folder for the layer with the given id, and adds it to the layer chain.

func (*Driver) CreateReadWrite Uses

func (d *Driver) CreateReadWrite(id, parent string, opts *graphdriver.CreateOpts) error

CreateReadWrite creates a layer that is writable for use as a container file system. That equates to creating a sandbox.

func (*Driver) Diff Uses

func (d *Driver) Diff(id, parent string) (io.ReadCloser, error)

Diff takes a layer (and it's parent layer which may be null, but is ignored by this implementation below) and returns a reader for a tarstream representing the layers contents. The id could be a read-only "layer.vhd" or a read-write "sandbox.vhdx". The semantics of this function dictate that the layer is already mounted. However, as we do lazy mounting as a performance optimisation, this will likely not be the case.

func (*Driver) DiffGetter Uses

func (d *Driver) DiffGetter(id string) (graphdriver.FileGetCloser, error)

DiffGetter returns a FileGetCloser that can read files from the directory that contains files for the layer differences. Used for direct access for tar-split.

func (*Driver) DiffSize Uses

func (d *Driver) DiffSize(id, parent string) (size int64, err error)

DiffSize calculates the changes between the specified layer and its parent and returns the size in bytes of the changes relative to its base filesystem directory.

func (*Driver) Exists Uses

func (d *Driver) Exists(id string) bool

Exists returns true if the given id is registered with this driver.

func (*Driver) Get Uses

func (d *Driver) Get(id, mountLabel string) (containerfs.ContainerFS, error)

Get returns the rootfs path for the id. It is reference counted and effectively can be thought of as a "mount the layer into the utility vm if it isn't already". The contract from the caller of this is that all Gets and Puts are matched. It -should- be the case that on cleanup, nothing is mounted.

For optimisation, we don't actually mount the filesystem (which in our case means [hot-]adding it to a service VM. But we track that and defer the actual adding to the point we need to access it.

func (*Driver) GetLayerPath Uses

func (d *Driver) GetLayerPath(id string) (string, error)

GetLayerPath gets the layer path on host (path to VHD/VHDX)

func (*Driver) GetMetadata Uses

func (d *Driver) GetMetadata(id string) (map[string]string, error)

GetMetadata returns custom driver information.

func (*Driver) Put Uses

func (d *Driver) Put(id string) error

Put does the reverse of get. If there are no more references to the layer, it unmounts it from the utility VM.

func (*Driver) Remove Uses

func (d *Driver) Remove(id string) error

Remove unmounts and removes the dir information.

func (*Driver) Status Uses

func (d *Driver) Status() [][2]string

Status returns the status of the driver.

func (*Driver) String Uses

func (d *Driver) String() string

String returns the string representation of a driver. This should match the name the graph driver has been registered with.

Package lcow imports 32 packages (graph). Updated 2019-10-03 with GOOS=windows. Refresh now. Tools for package owners.