pub struct TargetLayoutPlan {Show 15 fields
pub block_size: u32,
pub total_blocks: u32,
pub reserved_blocks: u32,
pub bitmap_start: u32,
pub bitmap_blocks: u32,
pub catalog_start: u32,
pub catalog_blocks: u32,
pub extents_start: u32,
pub extents_blocks: u32,
pub attributes_start: u32,
pub attributes_blocks: u32,
pub user_data_start: u32,
pub user_data_blocks_used: u32,
pub cnid_map: HashMap<u32, u32>,
pub file_placements: HashMap<u32, FilePlacement>,
}Expand description
Result of plan_defrag_layout. Pure planning data — no I/O has
happened, no bytes have been written.
Fields§
§block_size: u32§total_blocks: u32§reserved_blocks: u32Allocation blocks reserved for the volume’s structural region:
1 (boot+VH) + bitmap_blocks + catalog_blocks +
extents_blocks + attributes_blocks. Everything from
user_data_start to total_blocks - 1 (less the alt-VH region)
is available for user file forks.
bitmap_start: u32§bitmap_blocks: u32§catalog_start: u32§catalog_blocks: u32§extents_start: u32§extents_blocks: u32§attributes_start: u32attributes_blocks == 0 indicates the source had no xattrs and
the target’s attributes file is left unallocated (vh field
ForkData::empty() at build time).
attributes_blocks: u32§user_data_start: u32§user_data_blocks_used: u32First user-data block past the end of every allocated fork. The
builder uses this when computing vh.next_allocation, and the
emit phase uses total_blocks - user_data_blocks_used to compute
the zero-padding region between the last user fork and the alt
VH.
cnid_map: HashMap<u32, u32>Source CNID → target CNID. Includes every dir, file, inode, and hardlink stub captured in the snapshot. Root (CNID 2) maps to root.
file_placements: HashMap<u32, FilePlacement>Per-file fork placements, keyed by source CNID. Includes inodes (under HFS+ Private Data) but excludes hardlink stubs (they have no forks of their own).