Skip to main content

assign_installed_rows

Function assign_installed_rows 

Source
pub fn assign_installed_rows(
    namespace: &[ContainerMount],
    installations: &mut [Installation],
) -> bool
Expand description

Assign each row the plan created to the installation that created it, for a plan installed as the namespace’s last mounts, one mount operation after another, in a namespace whose propagation from the host was cut (made private) before the plan’s first mount, so that no host row can follow it: namespace lists rows in creation order (the kernel’s row order), so the plan’s rows are its end, each installation’s together and in plan order, each starting with the one row the operation created at its target (a recursive bind’s copies of the mounts below its source follow it). Walking back from the last row, a row is

  • the first row of the latest installation still open at whose mountpoint it is, which closes that installation; or
  • a copy the latest open installation’s recursive bind made, if it is below that installation’s mountpoint and the row it copies exists; or
  • no installation’s (a row a symbolic link redirected, a propagated copy), which is not admitted.

The walk ends at the first installation’s row: every row before it is the host’s. Returns whether it got there; if not, the plan’s rows cannot be told from the host’s. An installation with no mountpoint (a remount, which creates no row) takes none.