pub struct FlashGeometry {
pub erase_block_size: u32,
pub write_page_size: u32,
pub total_blocks: u32,
pub max_erase_cycles: u32,
}Expand description
Describes the physical geometry of a flash device.
Users must provide accurate geometry for their specific flash chip.
Incorrect values (especially erase_block_size or write_page_size) will
cause data corruption.
Fields§
§erase_block_size: u32Size of one erase block in bytes. Typical: 4096 (NOR) or 131072 (NAND).
write_page_size: u32Size of one write page in bytes.
For NOR flash this typically equals erase_block_size.
For NAND, typical values are 2048 or 4096.
total_blocks: u32Total number of erase blocks on the device.
max_erase_cycles: u32Maximum erase cycles per block before wear-out. Typical: 100,000 (NOR) or 3,000 to 10,000 (NAND).
Implementations§
Source§impl FlashGeometry
impl FlashGeometry
Sourcepub fn total_capacity(&self) -> u64
pub fn total_capacity(&self) -> u64
Total device capacity in bytes.
Sourcepub fn pages_per_block(&self) -> u32
pub fn pages_per_block(&self) -> u32
Number of write pages per erase block.
Sourcepub fn reserved_blocks(&self) -> u32
pub fn reserved_blocks(&self) -> u32
Compute the number of physical blocks reserved for FTL metadata.
This covers two journal slots (double-buffered) plus 2 spare blocks for garbage collection during block replacement.
Sourcepub fn logical_block_count(&self) -> u32
pub fn logical_block_count(&self) -> u32
Number of logical blocks available for data storage after reserving FTL overhead and COW headroom.
The COW headroom ensures that even when all logical blocks are
allocated, allocate_block() can still find free physical blocks for
copy-on-write operations.
Trait Implementations§
Source§impl Clone for FlashGeometry
impl Clone for FlashGeometry
Source§fn clone(&self) -> FlashGeometry
fn clone(&self) -> FlashGeometry
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more