§H.12 step 13: blk_meta_t flags bit constants

BLK_FLAG_CLAIMED/BLK_FLAG_MIGRATING/BLK_FLAG_STALE (bits 0/1/2), matching
the decided §F.4/§H.6 layout. Orthogonal bits, not a mutually-exclusive
enum.

Verified 3-arch boot to ok> (amd64/aarch64/riscv64).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-03 07:23:27 -04:00
co-authored by Claude Opus 5
parent edd7effb5a
commit c19cc07ee3
10 changed files with 27583 additions and 3 deletions
+4 -1
View File
@@ -4059,7 +4059,10 @@ work, not new invention.
comment to point at the assert instead of repeating the wrong number. Did not touch comment to point at the assert instead of repeating the wrong number. Did not touch
`BLK_META_PER_BLOCK` itself — out of scope, unused, not what this step asked for. `BLK_META_PER_BLOCK` itself — out of scope, unused, not what this step asked for.
Verified 3-arch boot to `ok>` (amd64/aarch64/riscv64). Verified 3-arch boot to `ok>` (amd64/aarch64/riscv64).
- [ ] **13.** Define the three `flags` bit constants (`CLAIMED`=0/`MIGRATING`=1/`STALE`=2). - [x] **13. DONE 2026-09-03.** `BLK_FLAG_CLAIMED`/`BLK_FLAG_MIGRATING`/`BLK_FLAG_STALE`
(bits 0/1/2, `1ull << n`) defined in `block_subsystem.h` right above `blk_meta_t`, `flags`
field comment updated to point at them. Verified 3-arch boot to `ok>`
(amd64/aarch64/riscv64).
- [ ] **14.** Add C get/set accessors for the new fields in `block_subsystem.c`. - [ ] **14.** Add C get/set accessors for the new fields in `block_subsystem.c`.
- [ ] **15.** Add FORTH wrappers (`BLK-ACL-ALLOW@`/`!`, `BLK-ACL-TTL@`/`!`, `BLK-OWNER@`). - [ ] **15.** Add FORTH wrappers (`BLK-ACL-ALLOW@`/`!`, `BLK-ACL-TTL@`/`!`, `BLK-OWNER@`).
- [ ] **16.** Add a new policy capsule (mirroring `ACL.4th`) with a real fast-deny check on - [ ] **16.** Add a new policy capsule (mirroring `ACL.4th`) with a real fast-deny check on
+1 -1
View File
@@ -1,5 +1,5 @@
# Capsule Block Manifest — Auto-generated # Capsule Block Manifest — Auto-generated
<!-- Generated by mkcapsule --manifest 2026-09-03T11:16:49Z --> <!-- Generated by mkcapsule --manifest 2026-09-03T11:21:56Z -->
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. --> <!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
<!-- Hand-written justifications and immutability notes live --> <!-- Hand-written justifications and immutability notes live -->
<!-- in MANIFEST.md alongside this auto-generated index. --> <!-- in MANIFEST.md alongside this auto-generated index. -->
BIN
View File
Binary file not shown.
+11 -1
View File
@@ -199,6 +199,16 @@ typedef struct {
_Static_assert(sizeof(blk_volume_meta_t) == 4096, _Static_assert(sizeof(blk_volume_meta_t) == 4096,
"blk_volume_meta_t must be exactly one 4 KiB devblock"); "blk_volume_meta_t must be exactly one 4 KiB devblock");
/* blk_meta_t.flags bit values -- FABRIC-3.md §F.4/§H.6/§H.12 step 13,
* decided 2026-09-02/03. Orthogonal bits, not a mutually-exclusive enum:
* a block can be both CLAIMED and MIGRATING at once. Grounded in the only
* states §F.4 actually motivated by a real need (MIGSM/UNCLEAN, two
* then-currently-blocked graph nodes) plus CLAIMED/STALE, the names
* already used loosely in that pass's own prose. 61 bits remain reserved. */
#define BLK_FLAG_CLAIMED (1ull << 0) /* owned, per BMAPFMT's owner_fp */
#define BLK_FLAG_MIGRATING (1ull << 1) /* mid-migration; serves MIGSM */
#define BLK_FLAG_STALE (1ull << 2) /* interrupted flush; serves UNCLEAN */
/* Per-1 KiB block metadata (packed into top 1 KiB region of each 4 KiB sector). */ /* Per-1 KiB block metadata (packed into top 1 KiB region of each 4 KiB sector). */
typedef struct { typedef struct {
/* Core integrity (16 bytes) */ /* Core integrity (16 bytes) */
@@ -210,7 +220,7 @@ typedef struct {
uint64_t modified_time; /* Unix timestamp (last write) */ uint64_t modified_time; /* Unix timestamp (last write) */
/* Block status (16 bytes) */ /* Block status (16 bytes) */
uint64_t flags; /* Status flags */ uint64_t flags; /* Status flags -- BLK_FLAG_* bits above */
uint64_t write_count; /* Number of writes (wear leveling) */ uint64_t write_count; /* Number of writes (wear leveling) */
/* Content identification (32 bytes) */ /* Content identification (32 bytes) */
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