common

package
v0.0.0-...-7dbebf3 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2026 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package common provides low-level container, process, and device primitives shared across chrek packages.

Index

Constants

View Source
const (

	// ContainerdSocket is the default containerd socket path.
	ContainerdSocket = "/run/containerd/containerd.sock"
)
View Source
const HostCgroupPath = "/sys/fs/cgroup"
View Source
const HostProcPath = "/host/proc"

HostProcPath is the mount point for the host's /proc in DaemonSet pods.

Variables

This section is empty.

Functions

func ApplyDeletedFiles

func ApplyDeletedFiles(checkpointPath, targetRoot string, log logr.Logger) error

ApplyDeletedFiles removes files marked as deleted in the checkpoint.

func ApplyRootfsDiff

func ApplyRootfsDiff(checkpointPath, targetRoot string, log logr.Logger) error

ApplyRootfsDiff extracts rootfs-diff.tar into the target root.

func BuildMountPolicy

func BuildMountPolicy(mounts []types.MountInfo, rootFS string, maskedPaths []string) (map[string]string, []string)

BuildMountPolicy classifies mounts and masked paths for CRIU dump. Mounts must already have IsOCIManaged set by ClassifyMounts.

Policy (evaluated top to bottom):

  1. Skip: non-OCI /proc/*, /sys/*, /run/* submounts (virtual/runtime, not in placeholder)
  2. Native: /dev/shm tmpfs (CRIU saves and restores content)
  3. Masked: OCI masked non-directory paths that exist under rootFS → /dev/null
  4. Externalize: everything else (OCI mounts the runtime recreates in placeholder)

func CaptureDeletedFiles

func CaptureDeletedFiles(upperDir, checkpointDir string) (bool, error)

CaptureDeletedFiles finds whiteout files and saves them to a JSON file.

func CaptureRootfsDiff

func CaptureRootfsDiff(upperDir, checkpointDir string, exclusions types.OverlaySettings, bindMountDests []string) (string, error)

CaptureRootfsDiff captures the overlay upperdir to a tar file.

func ClassifyMounts

func ClassifyMounts(mounts []types.MountInfo, ociSpec *specs.Spec, rootFS string) []types.MountInfo

ClassifyMounts sets IsOCIManaged on each mount by matching against the container's OCI spec (mounts, masked paths, readonly paths). Handles /run/ ↔ /var/run/ aliasing since some images symlink one to the other.

func GetNetNSInode

func GetNetNSInode(pid int) (uint64, error)

GetNetNSInode returns the network namespace inode for a container process via /host/proc.

func GetOverlayUpperDir

func GetOverlayUpperDir(pid int) (string, error)

GetOverlayUpperDir extracts the overlay upperdir from mountinfo.

func GetRootFS

func GetRootFS(pid int) (string, error)

GetRootFS returns the container's root filesystem path via /host/proc.

func ParseProcExitCode

func ParseProcExitCode(statLine string) (syscall.WaitStatus, error)

ParseProcExitCode extracts and decodes the exit_code field (field 52) from a /proc/<pid>/stat line.

func ProcessTreePIDs

func ProcessTreePIDs(rootPID int) []int

ProcessTreePIDs walks the process tree rooted at rootPID and returns all PIDs. Used by nsrestore for in-namespace CUDA PID discovery.

func ReadMountInfo

func ReadMountInfo(pid int) ([]types.MountInfo, error)

ReadMountInfo reads and parses mountinfo for a container process via /host/proc.

func RemountProcSys

func RemountProcSys(rw bool) error

RemountProcSys remounts /proc/sys read-write or read-only.

func ResolveCgroupRootFromHostPID

func ResolveCgroupRootFromHostPID(pid int) (string, error)

ResolveCgroupRootFromHostPID reads the unified cgroup v2 path for a PID via /host/proc.

func ResolveContainer

func ResolveContainer(ctx context.Context, client *containerd.Client, containerID string) (int, *specs.Spec, error)

ResolveContainer resolves a container by ID and returns its PID and OCI spec.

func ResolveContainerByPod

func ResolveContainerByPod(ctx context.Context, client *containerd.Client, podName, podNamespace, containerName string) (int, *specs.Spec, error)

ResolveContainerByPod finds a container by pod name, namespace, and container name by listing containerd containers and matching CRI labels.

func SendSignalToPID

func SendSignalToPID(log logr.Logger, pid int, sig syscall.Signal, reason string) error

SendSignalToPID sends a signal to a host-visible PID via syscall.Kill.

func SendSignalViaPIDNamespace

func SendSignalViaPIDNamespace(ctx context.Context, log logr.Logger, referenceHostPID, targetNamespacePID int, sig syscall.Signal, reason string) error

SendSignalViaPIDNamespace sends a signal to a namespace-relative PID by entering the PID namespace of referenceHostPID via nsenter.

func ValidateProcessState

func ValidateProcessState(procRoot string, pid int) error

ValidateProcessState checks that a process is alive and not a zombie.

Types

This section is empty.

Jump to

Keyboard shortcuts

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