Documentation
¶
Index ¶
- Constants
- func All(mounts []Mount, target string) error
- func AttachLoopDevice(backingFile string) (string, error)
- func CanonicalizePath(path string) (string, error)
- func CleanupTempMounts(flags int) (warnings []error, err error)
- func DetachLoopDevice(devices ...string) error
- func GetUsernsFD(uidmap, gidmap string) (_usernsFD *os.File, _ error)
- func IDMapMount(source, target string, usernsFd int) (err error)
- func IDMapMountWithAttrs(source, target string, usernsFd int, attrSet uint64, attrClr uint64) (err error)
- func SetTempMountLocation(root string) error
- func ToProto(mounts []Mount) []*types.Mount
- func Unmount(target string, flags int) error
- func UnmountAll(mount string, flags int) error
- func UnmountMounts(mounts []Mount, target string, flags int) error
- func UnmountRecursive(target string, flags int) error
- func WithReadonlyTempMount(ctx context.Context, mounts []Mount, f func(root string) error) (err error)
- func WithTempMount(ctx context.Context, mounts []Mount, f func(root string) error) (err error)
- type Info
- type LoopParams
- type Mount
Constants ¶
const HasBindMounts = runtime.GOOS != "darwin" && runtime.GOOS != "openbsd"
HasBindMounts This is a flag to conditionally disable code that relies on working bind-mount support, so such code is easier to find across codebase.
Variables ¶
This section is empty.
Functions ¶
func All ¶
All mounts all the provided mounts to the provided target. If submounts are present, it assumes that parent mounts come before child mounts.
func AttachLoopDevice ¶
AttachLoopDevice attaches a specified backing file to a loop device
func CanonicalizePath ¶
CanonicalizePath makes path absolute and resolves symlinks in it. Path must exist.
func CleanupTempMounts ¶
CleanupTempMounts all temp mounts and remove the directories
func DetachLoopDevice ¶
DetachLoopDevice detaches the provided loop devices
func GetUsernsFD ¶
GetUsernsFD forks the current process and creates a user namespace using the specified mappings. Expected syntax of ID mapping parameter is "%d:%d:%d[,%d:%d:%d,...]"
func IDMapMount ¶
IDMapMount clones the mount at source to target, applying GID/UID idmapping of the user namespace for target path
func IDMapMountWithAttrs ¶
func IDMapMountWithAttrs(source, target string, usernsFd int, attrSet uint64, attrClr uint64) (err error)
IDMapMountWithAttrs clones the mount at source to target with the provided mount options and idmapping of the user namespace.
func SetTempMountLocation ¶
SetTempMountLocation sets the temporary mount location
func UnmountAll ¶
UnmountAll repeatedly unmounts the given mount point until there are no mounts remaining (EINVAL is returned by mount), which is useful for undoing a stack of mounts on the same mount point. UnmountAll all is noop when the first argument is an empty string. This is done when the containerd client did not specify any rootfs mounts (e.g. because the rootfs is managed outside containerd) UnmountAll is noop when the mount path does not exist.
func UnmountMounts ¶
UnmountMounts unmounts all the mounts under a target in the reverse order of the mounts array provided.
func UnmountRecursive ¶
UnmountRecursive unmounts the target and all mounts underneath, starting with the deepest mount first.
func WithReadonlyTempMount ¶
func WithReadonlyTempMount(ctx context.Context, mounts []Mount, f func(root string) error) (err error)
WithReadonlyTempMount mounts the provided mounts to a temp dir as readonly, and pass the temp dir to f. The mounts are valid during the call to the f. Finally we will unmount and remove the temp dir regardless of the result of f.
func WithTempMount ¶
WithTempMount mounts the provided mounts to a temp dir, and pass the temp dir to f. The mounts are valid during the call to the f. Finally we will unmount and remove the temp dir regardless of the result of f.
NOTE: The volatile option of overlayfs doesn't allow to mount again using the same upper / work dirs. Since it's a temp mount, avoid using that option here if found.
Types ¶
type Info ¶
Info reveals information about a particular mounted filesystem. This struct is populated from the content in the /proc/<pid>/mountinfo file.
type LoopParams ¶
type LoopParams struct {
// Loop device should forbid write
Readonly bool
// Loop device is automatically cleared by kernel when the
// last opener closes it
Autoclear bool
// Use direct IO to access the loop backing file
Direct bool
}
LoopParams parameters to control loop device setup
type Mount ¶
type Mount struct {
// Type specifies the host-specific of the mount.
Type string
// Source specifies where to mount from. Depending on the host system, this
// can be a source path or device.
Source string
// Target specifies an optional subdirectory as a mountpoint. It assumes that
// the subdirectory exists in a parent mount.
Target string
// Options contains zero or more fstab-style mount options. Typically,
// these are platform specific.
Options []string
}
Mount is the lingua franca of containerd. A mount represents a serialized mount syscall. Components either emit or consume mounts.
func FromProto ¶
FromProto converts from the protobuf definition types.Mount to Mount.
func RemoveVolatileOption ¶
RemoveVolatileOption copies and remove the volatile option for overlay type, since overlayfs doesn't allow to mount again using the same upper/work dirs.
REF: https://docs.kernel.org/filesystems/overlayfs.html#volatile-mount
TODO: Make this logic conditional once the kernel supports reusing overlayfs volatile mounts.