Expand description
Deferred $ATTRIBUTE_LIST name resolution (ADR-0011): name-bearing
extension records are cached in RAM while the $MFT streams through, so
this pass resolves names without disk reads; anything missing (cache
cap, torn records) falls back to a targeted read of the live volume.
StructsΒ§
- Lazy
Record πReader - Disk fallback for extension records missing from the streamed cache β opened only when actually needed (expected: never on a healthy scan).
- Record
Reader π - Random access to single records for the deferred attribute-list pass.
ConstantsΒ§
- EXT_
NAME_ πCACHE_ CAP - Upper bound on cached name-bearing extension records (~1KiB each, so β€128MiB transient). A real C: has tens of thousands; past the cap the deferred pass falls back to disk reads for the remainder.
FunctionsΒ§
- resolve_
attr_ πlist_ name - Resolve the display name of a record whose $
FILE_NAMElives in extension records (resident $ATTRIBUTE_LISTβ referenced records). Targets come from the streamed extension-record cache; anything missing (cache cap, torn records) falls back to a targeted disk read. Mirrors ntfs-readerβsget_best_file_namewithout needing the whole MFT in RAM. - resolve_
deferred π - Resolve deferred $
ATTRIBUTE_LISTnames in parallel β almost entirely from RAM: every target is an extension record and the whole $MFT just streamed through the pipeline, soextalready holds the bytes (ADR-0011). Chunk order is preserved, soEntryIdassignment matches a serial loop.