pub struct IsoBlockIoAdapter<'a, B: BlockIo> {
ctx: IsoReadContext,
block_io: &'a mut B,
}Expand description
Block I/O adapter that implements gpt_disk_io::BlockIo
This allows iso9660 to read from chunked ISO storage transparently. The adapter translates virtual sector addresses to physical disk locations.
iso9660 uses 2048-byte sectors, but physical disk uses 512-byte blocks. This adapter handles the translation.
Fields§
§ctx: IsoReadContextISO read context (chunk partition info)
block_io: &'a mut BUnderlying block device
Implementations§
Source§impl<'a, B: BlockIo> IsoBlockIoAdapter<'a, B>
impl<'a, B: BlockIo> IsoBlockIoAdapter<'a, B>
Sourcepub fn new(ctx: IsoReadContext, block_io: &'a mut B) -> Self
pub fn new(ctx: IsoReadContext, block_io: &'a mut B) -> Self
Create a new adapter
§Arguments
ctx- ISO read context from IsoStorageManagerblock_io- Underlying disk block device
Sourcepub fn total_size(&self) -> u64
pub fn total_size(&self) -> u64
Get total size in bytes
Sourcepub fn total_iso_sectors(&self) -> u64
pub fn total_iso_sectors(&self) -> u64
Get total number of ISO sectors (2048-byte sectors)
Sourcefn find_chunk_for_offset(&self, byte_offset: u64) -> Option<(usize, u64)>
fn find_chunk_for_offset(&self, byte_offset: u64) -> Option<(usize, u64)>
Find which chunk contains a given byte offset
Sourcefn translate_byte_offset_to_disk_lba(&self, byte_offset: u64) -> Option<u64>
fn translate_byte_offset_to_disk_lba(&self, byte_offset: u64) -> Option<u64>
Translate ISO byte offset to physical disk LBA (512-byte sectors)
Trait Implementations§
Source§impl<'a, B: BlockIo> BlockIo for IsoBlockIoAdapter<'a, B>
impl<'a, B: BlockIo> BlockIo for IsoBlockIoAdapter<'a, B>
Source§fn block_size(&self) -> BlockSize
fn block_size(&self) -> BlockSize
Get the [
BlockSize]. The return value is not allowed to
change.Source§fn num_blocks(&mut self) -> Result<u64, Self::Error>
fn num_blocks(&mut self) -> Result<u64, Self::Error>
Get the number of logical blocks in the disk. Read more
Source§fn read_blocks(
&mut self,
start_lba: Lba,
buffer: &mut [u8],
) -> Result<(), Self::Error>
fn read_blocks( &mut self, start_lba: Lba, buffer: &mut [u8], ) -> Result<(), Self::Error>
Read contiguous blocks from the disk. The
dst buffer size must
be a multiple of block_size. Implementations are permitted
to panic if this precondition is not met, e.g. by calling
[BlockSize::assert_valid_block_buffer].Source§fn write_blocks(
&mut self,
_start_lba: Lba,
_buffer: &[u8],
) -> Result<(), Self::Error>
fn write_blocks( &mut self, _start_lba: Lba, _buffer: &[u8], ) -> Result<(), Self::Error>
Write contiguous block to the disk. The
src buffer size must
be a multiple of block_size. Implementations are permitted
to panic if this precondition is not met, e.g. by calling
[BlockSize::assert_valid_block_buffer]. Read moreAuto Trait Implementations§
impl<'a, B> Freeze for IsoBlockIoAdapter<'a, B>
impl<'a, B> RefUnwindSafe for IsoBlockIoAdapter<'a, B>where
B: RefUnwindSafe,
impl<'a, B> Send for IsoBlockIoAdapter<'a, B>where
B: Send,
impl<'a, B> Sync for IsoBlockIoAdapter<'a, B>where
B: Sync,
impl<'a, B> Unpin for IsoBlockIoAdapter<'a, B>
impl<'a, B> !UnwindSafe for IsoBlockIoAdapter<'a, B>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more