lcow

package
v20.10.27+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2023 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Rendered for windows/amd64

Index

Constants

This section is empty.

Variables

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

ErrNotSupported is an error for unsupported operations in the remotefs

Functions

func InitDriver

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

InitDriver returns a new LCOW storage driver.

Types

type Driver

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

Driver represents an LCOW graph driver.

func (*Driver) ApplyDiff

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

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

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

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

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

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

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

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

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

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

func (*Driver) Get

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

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

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

func (*Driver) GetMetadata

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

GetMetadata returns custom driver information.

func (*Driver) Put

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

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

Remove unmounts and removes the dir information.

func (*Driver) Status

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

Status returns the status of the driver.

func (*Driver) String

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL