Documentation ¶
Overview ¶
Package layers deals with container layer mounting/unmounting for LCOW and WCOW
Index ¶
- Constants
- func GetHCSLayers(ctx context.Context, vm *uvm.UtilityVM, paths []string) (layers []hcsschema.Layer, err error)
- func MountContainerLayers(ctx context.Context, layerFolders []string, guestRoot string, ...) (_ string, err error)
- func UnmountContainerLayers(ctx context.Context, layerFolders []string, containerRootPath string, ...) error
- type ImageLayers
- type UnmountOperation
Constants ¶
const ( UnmountOperationSCSI UnmountOperation = 0x01 UnmountOperationVSMB = 0x02 UnmountOperationVPMEM = 0x04 UnmountOperationAll = UnmountOperationSCSI | UnmountOperationVSMB | UnmountOperationVPMEM )
Variables ¶
This section is empty.
Functions ¶
func GetHCSLayers ¶
func GetHCSLayers(ctx context.Context, vm *uvm.UtilityVM, paths []string) (layers []hcsschema.Layer, err error)
GetHCSLayers converts host paths corresponding to container layers into HCS schema V2 layers
func MountContainerLayers ¶
func MountContainerLayers(ctx context.Context, layerFolders []string, guestRoot string, uvm *uvmpkg.UtilityVM) (_ string, err error)
MountContainerLayers is a helper for clients to hide all the complexity of layer mounting Layer folder are in order: base, [rolayer1..rolayern,] scratch
v1/v2: Argon WCOW: Returns the mount path on the host as a volume GUID. v1: Xenon WCOW: Done internally in HCS, so no point calling doing anything here. v2: Xenon WCOW: Returns a CombinedLayersV2 structure where ContainerRootPath is a folder
inside the utility VM which is a GUID mapping of the scratch folder. Each of the layers are the VSMB locations where the read-only layers are mounted.
TODO dcantah: Keep better track of the layers that are added, don't simply discard the SCSI, VSMB, etc. resource types gotten inside.
func UnmountContainerLayers ¶
func UnmountContainerLayers(ctx context.Context, layerFolders []string, containerRootPath string, uvm *uvmpkg.UtilityVM, op UnmountOperation) error
UnmountContainerLayers is a helper for clients to hide all the complexity of layer unmounting
Types ¶
type ImageLayers ¶
type ImageLayers struct {
// contains filtered or unexported fields
}
ImageLayers contains all the layers for an image.
func NewImageLayers ¶
func NewImageLayers(vm *uvm.UtilityVM, containerRootInUVM string, layers []string) *ImageLayers
type UnmountOperation ¶
type UnmountOperation uint
UnmountOperation is used when calling Unmount() to determine what type of unmount is required. In V1 schema, this must be unmountOperationAll. In V2, client can be more optimal and only unmount what they need which can be a minor performance improvement (eg if you know only one container is running in a utility VM, and the UVM is about to be torn down, there's no need to unmount the VSMB shares, just SCSI to have a consistent file system).