Repository navigation
vms-0db + vms-1b68: holder records carry waiting/converting locks; a standby's queued $ENQ survives its master's departure and is granted by the next master - #1961
Merged
Conversation
…sted at [30], granted at [31] The op-0x12 and op-0x08 holder records are encoded and decoded in ONE function, vms_dlm_rb_rec_modes (tests/lab/captures/vms-0db-waiting-records- 20261102, PR #1956): body[30] requested mode, body[31] granted mode (0 on a waiting lock); body[110] the queue: 01 granted, 00 converting, ff waiting -- the only separator; anything else is refused (E_RANGE) on receive; body[108] 0x04 and body[28] the lock's VALBLK/CONVERT/SYSTEM flags on a non-granted record. A granted record OVMX builds keeps its existing bytes (OVMX's granted locks carry equal modes; [108]/[28] stay 0). The 82/01 answer's body[28] is 0x10 | the record's body[108] (5,694/5,694) and a queued record's answer echoes its body[30:32]. fuzz_codec_dlm: a peer-receive fuzz of the new cells through both parsers, the answer builder and the builder round trip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…vives, is re-sent, and is granted by the next master Survivor side: a 0xfb records the master and its handle on the waiting proxy (vms_lock_dlm_proxy_queued_recv). A waiter the master acknowledged survives its departure (engine sweep and requester FSM alike, vms_lock_dlm_proxy_ survives); the hand-over and the rebuild describe every LKB, granted then converting then waiting (rd vms-0db), and a 0xfa re-homes the proxy and the requester block (dlm_req_fsm_rehomed) so the new master's grant completes the $ENQ. A request the master never acknowledged ends SS$_UNSUPPORTED as before; a survivor whose tree's rebuild stops, finds nothing sendable, or cannot run is ended SS$_UNSUPPORTED by vms_lock_dlm_rebuild_fail_unsent (no eternal wait). New-master side: a converting/waiting record is installed on the waiting queue, ungranted; this node's own waiters promoted by a 0xf9 are not granted either. Both are decided once when the rebuild window closes (vms_lock_dlm_rebuild_settle), with cross-node grants reported. Tests: test_dlm_rebuild (queue cells, survivor re-sent and granted, never- acknowledged, stopped, unbound, this node masters the waiter, inbound waiting record), test_dlm_requester (survivor keeps its block), and seven host negative controls with measured red sets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… LKB -- [30] requested, [31] granted, [108] 04 and [110] 00/ff on converting/waiting records frame_conformance.py gains an st:<key>=<hex> selector: a row applies to a frame whose emitting test recorded that executive fact. dlm_rm_08, dlm_rm_12 and dlm_rm_08_ans rows now follow the vms-0db verdict (body[30] REQUESTED, body[31] GRANTED, body[108] 04 and body[110] 00/ff on non-granted records, the 0xfa answer's body[28] 0x14 echoing body[30:32]). test_dlm_rebuild dumps the waiting and converting records with their state read off the LKB, and run_gate.sh refuses a waiting record whose modes are swapped or whose queue reads GRANTED. A converting lock the rebuild adopts carries LCK_M_CONVERT. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
baron-3dl
force-pushed
the
work/vms-1b68-standby-takeover
branch
from
November 2, 2026 16:27
7eb3598 to
c1a47be
Compare
…MX_FIRE_VOTES) ovmx_fire_node.sh typed VOTES 1 at SYSBOOT> whatever the plan needed; the 2026-11-02 standby-takeover fire lost quorum at VAX1's halt because of it. OVMX_FIRE_VOTES now reaches the SYSGEN VOTES prompt. Hermetic ctest lab_fire_node_votes with a hard-coded-VOTES negative control. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… real VAX master's departure rebuild and are granted by the new master (P1-P4 PASS, no bugcheck) Co-Authored-By: Claude Opus 5.5 <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.
Grounded on the vms-0db VAX-only capture (#1956, tests/lab/captures/vms-0db-waiting-records-20261102): a real holder sends one record per LKB it owns -- granted, converting and waiting -- with body[30]=requested, body[31]=granted (0 if never granted), body[110] queue state (01/00/ff), body[108]=04 on non-granted, flags at [28]; answer 0xfa [28]=0x10|rec[108].
NOT to be queued until the lab fire (lab/vms-1b68, own pod) passes.
🤖 Generated with Claude Code