Skip to content

vms-4bd0: DLM harness H2 -- two real-executive QEMU nodes complete the full VMS$VAXcluster join - #843

Merged
baron-3dl merged 1 commit into
mainfrom
work/vms-4bd0
Aug 28, 2026
Merged

baron-3dl merged 1 commit into
mainfrom
work/vms-4bd0

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

DLM harness H2 (rd vms-4bd0) — two real-executive QEMU nodes complete the full VMS$VAXcluster join

Extends the H1 two-node real-/dev/vms QEMU harness (socket mcast netdev, no host bridge, no privilege, CI-runnable) from the 0x6007 HELLO transport (H1) to the full VMS$VAXcluster JOIN. With the join sequencer on — OVMX_MCAST_SOLICIT=1 OVMX_JOIN_SEQ=1, the same flags the Docker tests/cluster/two-ovmx harness completes the OVMX↔OVMX join with — each node climbs multicast HELLO → directed HELLO → 0x41 START / VC OPEN → the 8-step SCS$DIRECTORY/MSCP$DISK/VMS$VAXcluster sequencer → member-role 0x5b accept, and BOTH nodes reach SCSD-I-VAXCLMEMBER, inside QEMU, each on a real executive.

Scope discipline: JOIN/membership only. No OVMX_DLM_ENQ (the cross-node $ENQ is H3, the grant is H4). No change to the executive stub or DLM GRANT logic.

Files

  • tests/qemu/init_dlm_h2.sh — PID 1; exports the sequencer flags, runs SCSD.EXE --connect, emits the NEW→MEMBER ladder + VAXCLMEMBER on ttyS1.
  • tests/qemu/run_dlm_harness_h2.sh — boots both nodes; verdict asserts both reached SCSD-I-VAXCLMEMBER (mirrors tests/cluster/two-ovmx/verdict.sh); emits DLM HARNESS H2 PASSED / A_VAXCLMEMBER=1 B_VAXCLMEMBER=1. Default H2_DURATION=90 (matches the Docker harness's completing run).
  • tests/qemu/Dockerfile.dlm-harness-h2 — same real-executive ingredients as H1 (vms.ko + static-musl SCSD.EXE + sca_l2probe + OVMXA/OVMXB SYSGEN stores).
  • CI job dlm-harness-h2 under the dlm_harness path filter (KVM passthrough, TCG fallback, uploads pcap + node logs).

Proven locally (workshop, KVM), both nodes on a real /dev/vms

=== node A / node B: PASS: vms.ko loaded, /dev/vms present (char device)
ladder A: HELLOSENT DIRHELLO STARTTX STARTDONE VCOPEN OWNDIRBOUND MSCPBOUND CONNRESP VAXCLMEMBER CMCONFIG
ladder B: HELLOSENT DIRHELLO STARTTX STARTDONE VCOPEN OWNDIRBOUND MSCPBOUND CONNRESP VAXCLMEMBER CMCONFIG

A: SCSD-I-VAXCLMEMBER, VMS$VAXcluster SYSAP connection reached OPEN (conid=0xD85A0002 joiner-opened)
B: SCSD-I-VAXCLMEMBER, VMS$VAXcluster SYSAP connection reached OPEN (conid=0xFB0A0002 joiner-opened)
pcap: nodeA 235 frames (peer_seen=1), nodeB 238 frames (peer_seen=1)

highest rung A : SCSD-I-CMCONFIG
highest rung B : SCSD-I-CMCONFIG
verdict inputs: A_VAXCLMEMBER=1  B_VAXCLMEMBER=1

  DLM HARNESS H2 PASSED
  A_VAXCLMEMBER=1 B_VAXCLMEMBER=1

Container exit rc=0.

Real-executive finding

No defect surfaced. The stop-and-wait join sequencer that completes in the Docker two-ovmx harness also completes under real-executive QEMU boot/scheduling latency over the mcast socket netdev — the join reaches membership on both sides with no timing/collision-latch divergence. (H0 by contrast surfaced a missing REGISTER; H2's real-executive join is clean.)

🤖 Generated with Claude Code

…e full VMS$VAXcluster join

Extends the H1 two-node real-/dev/vms QEMU harness (socket mcast netdev, no
bridge, no privilege) to drive the FULL VMS$VAXcluster join to completion: with
the join sequencer on (OVMX_MCAST_SOLICIT=1 OVMX_JOIN_SEQ=1 -- the SAME flags
the Docker tests/cluster/two-ovmx harness completes the OVMX<->OVMX join with),
each node climbs multicast HELLO -> directed HELLO -> 0x41 START/VC OPEN -> the
8-step SCS$DIRECTORY/MSCP$DISK/VMS$VAXcluster sequencer -> member-role 0x5b
accept, and BOTH nodes reach SCSD-I-VAXCLMEMBER, inside QEMU, each on a real
executive.

JOIN/membership ONLY: no OVMX_DLM_ENQ (the cross-node $ENQ is H3, the grant is
H4). No change to the executive stub or DLM GRANT logic.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@baron-3dl
baron-3dl merged commit 035ca91 into main Aug 28, 2026
104 checks passed
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>
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.

1 participant