#[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum FsError { Io(u16), CacheFull, FreemapExhausted, InvalidBlock, CorruptSuperblock, CorruptNode, ReservedExhausted, NotFound, RingFull, PoolExhausted, TreeFull, DuplicateKey, KeyNotFound, DecompressError, DirectoryNotEmpty, NameTooLong, SymlinkDepthExceeded, NotADirectory, NotAFile, IsADirectory, FileExists, InvalidName, PathTooDeep, IntegrityFailure, InsufficientRights, StaleGeneration, HandleTableFull, InvalidHandle, DoubleFree, } impl From for FsError { fn from(e: crate::cap::CapError) -> Self { match e { crate::cap::CapError::InsufficientRights => FsError::InsufficientRights, crate::cap::CapError::StaleGeneration => FsError::StaleGeneration, crate::cap::CapError::InvalidHandle => FsError::InvalidHandle, crate::cap::CapError::HandleTableFull => FsError::HandleTableFull, crate::cap::CapError::NotADirectory => FsError::NotADirectory, crate::cap::CapError::PathTooDeep => FsError::PathTooDeep, } } } #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum IntegrityError { CrcMismatch { block_num: u64 }, HashMismatch { block_num: u64 }, TreeCorrupt, KeyNotInTree, Io(FsError), }