# Pre12 Batch 01

This batch aligns the planned in-memory NID, block-number, and byte-offset
declarations with the existing `erofs_nid_t`, `erofs_blk_t`, and
`erofs_off_t` aliases.

The source whitelist was limited to eight fields in `internal.h`, the
`erofs_iloc`, `erofs_nid_is_valid`, `erofs_read_inode`, and `erofs_vfs_hash`
declarations and definitions, and the byte-offset parameters of
`erofs_bread`, `erofs_read_physical`, and `erofs_read_metadata`.

All three aliases are direct `uint64_t` typedefs.  Static assertions confirmed
that each is an unsigned, 8-byte type with the same alignment and exact C type
compatibility as `uint64_t`.  Consequently every replaced field has identical
size and alignment, so both structure sizes, alignments, field order, and all
target `offsetof` values are unchanged.  Function parameter and return ABI
representations are also unchanged, and the vnode hash still consumes the
same complete 8-byte NID object.

The source diff is limited to the planned fields, function declarations and
definitions, and necessary local declaration splits.  No expressions, field
order, on-disk types, control flow, error handling, or formatting outside
those declarations changed.

Validation used exact declaration inventory checks, token-diff inspection,
declaration/definition signature comparison, arithmetic and hash review,
compile-time type assertions, and `git diff --check`.  No planned point was
skipped and no out-of-scope candidate was changed.  No build, QEMU, smoke,
feature, or other dynamic test was run.
