The kernel docs and man pages this subsystem encodes. Cite specific sections in the source when interpretation is non-obvious.
Man pages
mount(2)— the canonical reference for the mount syscall. Flag semantics, valid combinations, thedataargument format.umount(2)/umount2(2)— the two-flavor unmount API; we wrapumount2.MNT_FORCE/MNT_DETACH/MNT_EXPIRE/UMOUNT_NOFOLLOWsemantics.pivot_root(2)— the rootfs-swap syscall. Critically: lists the four constraintsnew_rootandput_oldmust satisfy (mount points, no shared propagation, etc.).proc(5)— the mountinfo format. Section "/proc/[pid]/mountinfo" documents the 11-field shape plus the optional-fields section terminated by-.mount_namespaces(7)— how mounts behave across the:mountnamespace. Propagation types, what "shared" / "slave" / "private" / "unbindable" mean.
Kernel documentation
Documentation/filesystems/sharedsubtree.rst— the canonical reference for mount propagation. Read before adding any of:shared/:slave/:private/:unbindable.Documentation/filesystems/proc.rst— supplementary detail on/proc/<pid>/mountinfoand/proc/<pid>/mounts.
Adjacent man pages (background)
namespaces(7)— overview. The relationship betweenclone(CLONE_NEWNS),setns(CLONE_NEWNS), and the mount namespace.nsenter(1)— the userspace tool that does, essentially, what our:inoption does. The semantics our cross-namespace mounts match.
In-repo cross-references
Linx.Process—Linx.Processnamespace machinery; the:mountnamespace and where it comes from.lib/linx/netlink/socket/native.ex— the netlink-in-netns NIF whose throwaway-thread setns patternLinx.Mount.Nativereuses.lib/linx/cgroup/error.ex— pattern forLinx.Mount.Error's shape andExceptionimpl.
Out of scope — pointers for future work
- The new mount API — see man pages for
open_tree(2),move_mount(2),fsopen(2),fsmount(2),fsconfig(2),mount_setattr(2). When a consumer needs this, a siblingLinx.Mount.Newmodule would be the natural home.