Skip to content

fix(tfork): make live-clone cleanup transactional - #4

Open
yiying-zhang wants to merge 59 commits into
mainfrom
fix/tfork-transactional-cleanup
Open

fix(tfork): make live-clone cleanup transactional#4
yiying-zhang wants to merge 59 commits into
mainfrom
fix/tfork-transactional-cleanup

Conversation

@yiying-zhang

Copy link
Copy Markdown
Collaborator

Summary

  • make live-clone setup an explicit transaction until publication commits;
  • centralize idempotent rollback for source thaw, clone processes, cgroups,
    bundles, runtime publications, exit files, and partial registration;
  • protect PID cleanup with /proc/<pid>/stat start-time identity;
  • make network, migration, watcher, conmon, source-health, and clone-health
    failures fatal; a multi-copy batch now rolls back all copies if copy N fails;
  • remove external-registration and /run/libpod/tfork lifecycle leaks;
  • reject unsupported systemd-cgroup sources before freeze; and
  • add fault injection at all eight Podman-owned publication boundaries.

Validation

  • focused abi and libpod Go tests passed;
  • Podman build passed;
  • all eight injected fault boundaries were reached and rolled back cleanly;
  • a clean fork immediately after faults passed inheritance and divergence;
  • systemd-cgroup rejection left the source usable;
  • final integrated run left zero bundles, runtime publications, helper
    processes, cgyard mounts, clone cgroups, and D-state tasks.

Compatibility

The current tfork manual cgroup plumbing is cgroupfs-specific. This change
fails early with an actionable error instead of freezing a systemd-cgroup
source and failing during restore.

yiying-zhang and others added 30 commits July 10, 2026 23:44
Stabilize live tfork source freezing
yiying-zhang and others added 29 commits July 17, 2026 22:25
…-main

Stabilize single-copy tfork clone path
Rewrite tclone setup for Gensee Crate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants