Documentation ¶
Index ¶
- Variables
- func InitDriver(dataRoot string, options []string, _, _ []idtools.IDMap) (graphdriver.Driver, error)
- type Driver
- func (d *Driver) ApplyDiff(id, parent string, diff io.Reader) (int64, error)
- func (d *Driver) Changes(id, parent string) ([]archive.Change, error)
- func (d *Driver) Cleanup() error
- func (d *Driver) Create(id, parent string, opts *graphdriver.CreateOpts) error
- func (d *Driver) CreateReadWrite(id, parent string, opts *graphdriver.CreateOpts) error
- func (d *Driver) Diff(id, parent string) (io.ReadCloser, error)
- func (d *Driver) DiffGetter(id string) (graphdriver.FileGetCloser, error)
- func (d *Driver) DiffSize(id, parent string) (size int64, err error)
- func (d *Driver) Exists(id string) bool
- func (d *Driver) Get(id, mountLabel string) (containerfs.ContainerFS, error)
- func (d *Driver) GetLayerPath(id string) (string, error)
- func (d *Driver) GetMetadata(id string) (map[string]string, error)
- func (d *Driver) Put(id string) error
- func (d *Driver) Remove(id string) error
- func (d *Driver) Status() [][2]string
- func (d *Driver) String() string
Constants ¶
This section is empty.
Variables ¶
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 ¶
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 ¶
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 ¶
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 ¶
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) 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 ¶
GetLayerPath gets the layer path on host (path to VHD/VHDX)
func (*Driver) GetMetadata ¶
GetMetadata returns custom driver information.
func (*Driver) Put ¶
Put does the reverse of get. If there are no more references to the layer, it unmounts it from the utility VM.