pub struct CallbackDevice {
pub size: u64,
pub read: ReadCb,
pub write: Option<WriteCb>,
pub flush: Option<FlushCb>,
}Expand description
Callback-backed device — used when the host process owns the fd
(e.g. FSBlockDeviceResource via the C bridge). Optional write callback;
set to None for read-only.
Fields§
§size: u64§read: ReadCb§write: Option<WriteCb>§flush: Option<FlushCb>Trait Implementations§
Source§impl BlockDevice for CallbackDevice
impl BlockDevice for CallbackDevice
Source§fn read_at(&self, offset: u64, buf: &mut [u8]) -> Result<()>
fn read_at(&self, offset: u64, buf: &mut [u8]) -> Result<()>
Read exactly
buf.len() bytes starting at offset (bytes from start of device).Source§fn size_bytes(&self) -> u64
fn size_bytes(&self) -> u64
Total device size in bytes (for bounds-checking).
Source§fn write_at(&self, offset: u64, buf: &[u8]) -> Result<()>
fn write_at(&self, offset: u64, buf: &[u8]) -> Result<()>
Write exactly
buf.len() bytes at offset. Default: returns an error
for read-only devices. Writable devices override this.Source§fn flush(&self) -> Result<()>
fn flush(&self) -> Result<()>
Flush any pending writes to stable storage. Default: no-op for
read-only devices; writable devices should implement fsync semantics.
Source§fn is_writable(&self) -> bool
fn is_writable(&self) -> bool
Reports whether
write_at is likely to succeed. Used by the mount
path to decide whether journal replay is possible.Source§fn populate_cache(&self, _block: u64, _bytes: Vec<u8>)
fn populate_cache(&self, _block: u64, _bytes: Vec<u8>)
Buffer-cache hook: stash
bytes for block so a subsequent
read_at returns those bytes instead of reading from physical
storage. Used by a read-only mount’s journal replay to make
committed metadata visible to readers without writing it back to
the data area on disk. Read moreSource§fn unpin_all(&self)
fn unpin_all(&self)
Buffer-cache hook: tell the device the journal has been
checkpointed, so any blocks pinned via
populate_cache are now
consistent with disk and can be evicted under normal LRU
pressure. No-op for un-cached devices.Source§fn invalidate_cache(&self) -> Result<()>
fn invalidate_cache(&self) -> Result<()>
Discard clean read-cache entries. Pinned journal metadata must be
checkpointed and unpinned first; cached implementations reject otherwise.
This does not flush writes and requires exclusive filesystem ownership.
Source§impl BlockDevice for CallbackDevice
impl BlockDevice for CallbackDevice
Auto Trait Implementations§
impl !RefUnwindSafe for CallbackDevice
impl !UnwindSafe for CallbackDevice
impl Freeze for CallbackDevice
impl Send for CallbackDevice
impl Sync for CallbackDevice
impl Unpin for CallbackDevice
impl UnsafeUnpin for CallbackDevice
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