You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PLAN.md
+5-9Lines changed: 5 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -465,15 +465,11 @@ The dev stand has been Talos+QEMU loopfile-backed. Production parity needs:
465
465
466
466
`tests/burnin-blockstor.sh` covers the 2-replica failover happy path. The remaining scenarios above each need a deterministic, automatable test in `tests/e2e/`:
467
467
468
-
-[x]**e2e harness scaffolded** (2026-05-09): all 12 scenarios committed under `tests/e2e/`, plus a shared `lib.sh` (on_node, wait_uptodate, write_random, read_md5, delete_rd, require_workers, rd_apply, rest_post, rest_put). `make e2e NAME=<cluster> SCENARIO=<name>` invokes one; `make e2e-list` enumerates them. Stand-side run on 2026-05-09 (after fresh stand bring-up + multi-volume minor allocator fix):
-`tests/e2e/tiebreaker.sh` — **PASS** (witness lands on N3 with TIE_BREAKER flag, drops correctly when parity flips)
471
-
-`tests/e2e/evacuate.sh` — **PASS** (3-node migration to N3, source replica retained per EVICTED semantic)
472
-
-`tests/e2e/resize-plain.sh` — **PASS** (PUT /v1/.../volume-definitions/0 size_kib=131072 → satellite resizes loop, drbdadm resize, /dev/drbdN reports new size minus DRBD metadata overhead)
473
-
-`tests/e2e/auto-diskful.sh`, `two-volume-rd.sh`, `two-primaries-live-migration.sh` — flake on the busy stand under back-to-back runs (initial DRBD sync occasionally takes >180s when 3 RDs are coming up close together). Functional path is correct; the test harness needs better cross-test isolation (longer stabilisation pause between scenarios, or one stand per scenario via `make up NAME=tN`).
474
-
-`tests/e2e/backing-device-fail.sh` — sysfs autoclear on a loop file doesn't propagate to DRBD as disk:Failed (DRBD holds the fd open). Real path needs LVM-thin or ZFS pool with sysfs `device/delete` (deferred to 8.6 real-disk).
475
-
-`tests/e2e/snapshot-restore-cross-node.sh`, `clone.sh`, `resize-luks.sh` — REST plumbing verified via the new `rest_post`/`rest_put` helpers (port-forward + host curl, since the controller image is distroless). LUKS / snapshot-shipping execution paths need encrypted-RD and ZFS-pool stand profiles, tracked in 8.6/8.7.
476
-
-`tests/e2e/network-partition.sh`, `rwx-ganesha.sh` — stand setup gaps (iptables-controllable networking, Ganesha+drbd-reactor); deferred per 8.6/8.7.
468
+
-[x]**e2e harness scaffolded** (2026-05-09): all 12 scenarios committed under `tests/e2e/`, plus a shared `lib.sh` (on_node, wait_uptodate, write_random, read_md5, delete_rd, require_workers, rd_apply, rest_post, rest_put). `make e2e NAME=<cluster> SCENARIO=<name>` invokes one; `make e2e-list` enumerates them. Stand-side runs on 2026-05-09 surfaced (and fixed) several real bugs in the controller / stand setup along the way:
-**Bugs surfaced + fixed**: minor allocator didn't expand multi-volume range (commit `bf23552`); RD reconciler raced itself on Update under fan-out (commit `fac60a9`); RD changes didn't re-enqueue Resources (commit `aab68a1`); ListByDefinition filtered by labels not by Spec (commit `436669e`); satellite gRPC port collided with DRBD's default range (commit `8c041cf`); satellite advertised port hardcoded to 7000 (commit `1481d4a`); satellite leaked LINSTOR-only `DrbdOptions/<key>` into `.res` (commit `939318e`); .res not wiped on satellite startup (commit `71bf4d3`); namespace lacked privileged PSA label (commit `1cf7e16`); blockstor-system installer (`make blockstor`) auto-applies CRDs+controller+satellites (commit `5f098dc`); pool capacity reporting via statfs (commit `54923ad`).
471
+
-**Flake**: `tests/e2e/auto-diskful.sh`, `two-volume-rd.sh`, `two-primaries-live-migration.sh`. Functional path is correct in isolation; under back-to-back runs the busy QEMU stand's first-sync occasionally takes >180s. Mitigation: parallel stands (`make up NAME=t1` etc.) instead of serialising on one. Tracked under 8.8 follow-up.
472
+
-**Deferred**: `tests/e2e/backing-device-fail.sh` (sysfs autoclear on a loop file doesn't propagate as disk:Failed; needs real LVM-thin/ZFS — 8.6); `tests/e2e/snapshot-restore-cross-node.sh`, `clone.sh`, `resize-luks.sh` (REST plumbing verified, end-to-end execution needs LUKS + ZFS-pool stand profiles — 8.6/8.7); `tests/e2e/network-partition.sh`, `rwx-ganesha.sh` (need iptables-controllable networking + Ganesha+drbd-reactor; 8.6/8.7).
477
473
478
474
**Exit criteria for Phase 8**: every checkbox above either lands or is moved to a separately-tracked "explicit out-of-scope" with rationale. Until then "production-ready" is overstating it; what we have is a CSI-compatible REST front-end with a verified happy path.
0 commit comments