Stage MC-0b2: block subsystem behind g_lock_block (FABRIC-3.10.8 §3.3)
- block_subsystem.c (vendored): every public function's body becomes a static *_locked function; bodies call each other only through the _locked forms, breaking the internal cycles (relocate, meta relocate, migration scan, firsttouch, the meta accessors). Thin public wrappers take g_lock_block under __STARKERNEL__; hosted build has no lock and still builds clean. - Lock order: hermes, switch, registry, doe, log, block, console, heap, vmm, pmm (Stadium, MC-0d, above block). - Documented, not coverable by this lock: blk_get_buffer() pointers are used after release -- block-buffer ownership across cores is open for MC-3. - Probe (removed): block lock balances on all three ISAs (2,057-2,379 acquisitions), 0 recursions, 0 held at switch; vblk_io timeouts (0/0/4 probe, 0/0/2 acceptance) within the pre-lock riscv64 baseline of 0-6. - Standard sequence on amd64/aarch64/riscv64: hashes and G byte-identical to MC-0b, MINT/WIREBIND/USE ok, conservation true, 0 idle growth. - FABRIC-3.10.8 §3.2 wording fix; lock order noted as checked by inspection only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5bc7b4dee7
commit
33f4090d6d
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user