vms-534: DLM cross-node harness H1 — two real-executive nodes exchange 0x6007 HELLO over a socket netdev - #842
Merged
Merged
Conversation
…-guest socket-netdev runner) De-risk the make-or-break H1 unknown before building the full harness: does a QEMU socket netdev flood the 0x6007 group multicast (AB-00-04-01-01-01) between two guests with no host bridge and no privilege? sca_l2probe is a tiny static raw-L2 send/recv+pcap probe; the runner boots two minimal guests wired only by -netdev socket (mcast default, sockpair fallback). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two real-executive OVMX QEMU nodes (each vms.ko -> /dev/vms), wired on one L2 by a QEMU socket mcast netdev (no bridge, no privilege), each running SCSD --connect --iface eth0. Verdict: BOTH nodes emit SCSD-I-HELLOSENT AND each logs the peer's inbound 0x6007 HELLO (SCSD-I-FRAME src=peer MAC). sca_l2probe captures the pcap. Also fixes the de-risk runner's subshell-wait bug (launch guests as real children). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the dlm-harness-h1 job (two real-executive QEMU nodes exchange 0x6007 HELLOs over a socket mcast netdev; passes /dev/kvm through when the runner has it, TCG fallback otherwise) and extends the dlm_harness path filter to the H1 harness + sca_l2probe + the SYSGEN generator. Uploads the pcap + node logs as a build artifact. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
baron-3dl
added a commit
that referenced
this pull request
Aug 28, 2026
…ce parity, SHOW USERS de-fab (#858) Bumps OVMX_PRODUCT_VERSION and os-release V0.5-7 -> V0.5-8. 14 commits since V0.5-7. Distributed Lock Manager — the cross-node ladder tops out at a real GRANT: - #849 vms-e8f1/vms-17c DLM rung-2 (H4): the first REAL cross-node $ENQ GRANT — node B holds a lock on A's behalf for A's CSID, $ENQ returns SS$_NORMAL over live SCS (no longer INV-6 "grants nothing"). The distributed lock manager now actually locks across nodes. - #845 vms-209 DLM harness H3 — a cross-node $ENQ reaches node B's real executive - #843 vms-4bd0 DLM harness H2 — two real-executive QEMU nodes complete the full VMS$VAXcluster join - #842 vms-534 DLM harness H1 — two real-executive nodes exchange the 0x6007 HELLO over a socket netdev - #840 vms-4b6 DLM harness rung H0 — SCSD.EXE composes with a real executive - #841 docs Alpha cross-node DLM wire oracle — observed SCS transport + documented GRANT semantics (Rule 8) Alpha co-release parity — authenticated login + the shared SHOW battery: - #852 vms-f2c Alpha DCL/SHOW acceptance parity — the same shared 11-command battery x86_64 runs, now on qemu-system-alpha - #847 vms.ko guards BG fork-inherit tracepoints behind CONFIG_TRACEPOINTS (Alpha P0 modpost fix) Authenticity (INV-6 de-fabrication): - #839 vms-6a1 SHOW USERS fails honestly when the executive is absent — no more per-process fabricated user list Boot console fidelity: - #850 vms-dec kill boot-console newline spam (the operator's echoed RETURNs) + a type-during-boot regression gate Networking (layered-product promotion): - #851 vms-67f TCP/IP Services promoted to a first-class layered product — build plan + roadmap (1.0 blocker) Docs / ledger: - #745 Alpha C-RTL archive DECIDED — Option A (operator ruling 2026-08-23) - #709 vms-da0 OpenVMS GCC port × OVMX faithful-surface gap analysis - #838 reconcile the release block for the V0.5-7 tag (INV-LEDGER) QA'd under KVM boot-to-login on the workshop host with the full SHOW acceptance battery VMS-faithful; boot console clean (no newline flood) and SHOW USERS honest. Release notes are generated at tag time by tools/gen_release_notes.py (INV-LEDGER single-ledger); the roadmap narrative block + public site are the conductor's reconcile (INV-0/INV-LEDGER). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DLM cross-node harness — rung H1 (vms-534)
Builds on H0 (#840): two OVMX QEMU nodes, each with a real
/dev/vms, joined on one shared L2 by a QEMUsocket(mcast) netdev — no host bridge, no privilege (CI-runnable) — where each node'sSCSD.EXE --connect --iface eth0emits its own 0x6007 LAVC/SCA HELLO (destAB-00-04-01-01-01) and receives the peer's. Transport/HELLO only; DLM grants are later rungs (H3/H4), the executive stub and grant logic are untouched.Make-or-break finding (de-risked first, as instructed)
A QEMU
socket,mcastnetdev DOES faithfully flood the 0x6007 group multicast between two guests with no host bridge and no privilege. Proven in isolation bysca_l2probe(a tiny static raw-L2 send/recv+pcap tool) before any harness was built.sockpair(listen/connect) was also verified as a robust fallback — still a socket netdev, still CI-runnable; no pivot to tap+bridge was needed.pcap evidence (tcpdump reading node A's reconstructed capture — node B's real SCSD HELLO):
H1 verdict (full harness, run under KVM)
Distinct identity per node (SCSNODE=OVMXA/OVMXB, SCSSYSTEMID=1601/1602, distinct HW MACs — the MAC is how each node tells the peer's HELLO from its own looped-back beacon).
What's here
tests/qemu/sca_l2probe.c— static raw-L2 probe (netdev de-risk + pcap capturer)tests/qemu/Dockerfile.dlm-harness-h1+init_dlm_h1.sh+run_dlm_harness_h1.sh— the full two-node harnesstests/qemu/Dockerfile.dlm-harness-h1-derisk+init_dlm_h1_derisk.sh+run_dlm_h1_derisk.sh— the isolated netdev proof (reproducible investigation tooling)dlm-harness-h1under the existingdlm_harnesspath filter (passes/dev/kvmthrough when present, TCG fallback; uploads pcap + node logs)Node logs collected over ttyS1; per-node pcap reconstructed from a base64 ttyS2 dump. Rule 9 runtime-target gate: PASS. Clean-room Rule 8 respected — the HELLO fidelity is
scs_hello.c;sca_l2probesends only a marker frame to exercise transport.🤖 Generated with Claude Code