diff options
| author | Craig Jennings <c@cjennings.net> | 2026-08-07 02:40:29 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-08-07 02:40:29 -0500 |
| commit | 14c08b4706a486ec080de606ccf1a7c2acd672b6 (patch) | |
| tree | 5243ae029ffa236d7678fc4278c63f970d45fc0c /docs/retrospectives | |
| parent | 72dc6c49636aefd12f707ffc3eeb244744133cae (diff) | |
| download | archangel-main.tar.gz archangel-main.zip | |
verify_zfssnapshot_wrapper rolled back zroot/ROOT/default while it was mounted and running, then immediately read the result and destroyed the snapshot. ZFS doesn't support rolling back a mounted root, and both follow-ups were unsafe. The page and dentry caches kept serving the pre-rollback view, so the sentinel check failed on four scenarios and passed on two identical ones. The cleanup destroy was worse: it blocked in cv_wait_common behind an uninterruptible txg_quiesce and wedged the pool, taking a whole run with it.
The check reboots the guest first now. A reboot exports and reimports the pool, which clears the fragile state and makes the on-disk contents readable. I pulled boot_from_disk and config_encrypt_flag out of run_test's inline boot block, so the mid-test and end-of-install paths share one implementation.
ssh_cmd is bounded by SSH_CMD_TIMEOUT, default 120s. ConnectTimeout only bounds the connection, so that wedged guest held a healthy session open and hung the run for 40 minutes. The installer call raises the bound to INSTALL_TIMEOUT, since it legitimately runs for many minutes.
send_zfs_passphrase sends once. Embedding the pool key left a single prompt, so the second send was typing the passphrase at a login prompt.
Diffstat (limited to 'docs/retrospectives')
0 files changed, 0 insertions, 0 deletions
