pub struct FileDevice { /* private fields */ }Expand description
File-backed device — used for disk images and /dev/diskN.
Implementations§
Source§impl FileDevice
impl FileDevice
Sourcepub fn open_path(path: &Path) -> Result<Self>
pub fn open_path(path: &Path) -> Result<Self>
Open read-only by a path that need not be UTF-8: a device or image name is bytes on Unix, and a lossy rendering of it can name another file.
Sourcepub fn open_rw(path: &str) -> Result<Self>
pub fn open_rw(path: &str) -> Result<Self>
Open read-write. Prefer this when the caller needs to journal-replay or apply Phase 4 mutations. Falls back to an error if the path is not writable.
Sourcepub fn open_path_rw(path: &Path) -> Result<Self>
pub fn open_path_rw(path: &Path) -> Result<Self>
Open read-write by a path that need not be UTF-8; see
FileDevice::open_path.
Sourcepub fn open_best_effort(path: &str) -> Result<Self>
pub fn open_best_effort(path: &str) -> Result<Self>
Open read-write if possible; otherwise fall back to read-only. Useful for the mount path so read-only images on e.g. a locked volume still mount, just without replay.
Trait Implementations§
Source§impl BlockDevice for FileDevice
impl BlockDevice for FileDevice
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 FileDevice
impl BlockDevice for FileDevice
Auto Trait Implementations§
impl !Freeze for FileDevice
impl RefUnwindSafe for FileDevice
impl Send for FileDevice
impl Sync for FileDevice
impl Unpin for FileDevice
impl UnsafeUnpin for FileDevice
impl UnwindSafe for FileDevice
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