#[repr(C)]pub(crate) struct Inode {Show 25 fields
mode: u16,
uid: u16,
pub size: u32,
atime: u32,
ctime: u32,
mtime: u32,
_dtime: u32,
gid: u16,
pub links_count: u16,
pub blocks: InodeBlocksCount,
_flags: u32,
_osd1: u32,
pub block: InodeBlock,
_generation: u32,
_file_acl: u32,
_dir_acl: u32,
_faddr: u32,
_fragment_num: u8,
_fragment_size: u8,
_reserved1: u16,
uid_high: u16,
gid_high: u16,
_reserved2: u32,
pub extra_size: u16,
_paddings: u16,
}
Expand description
The ext2 inode.
The field names are based on the specification.
Fields§
§mode: u16
§uid: u16
§size: u32
§atime: u32
§ctime: u32
§mtime: u32
§_dtime: u32
§gid: u16
§links_count: u16
§blocks: InodeBlocksCount
§_flags: u32
§_osd1: u32
§block: InodeBlock
§_generation: u32
§_file_acl: u32
§_dir_acl: u32
§_faddr: u32
§_fragment_num: u8
§_fragment_size: u8
§_reserved1: u16
§uid_high: u16
§gid_high: u16
§_reserved2: u32
§extra_size: u16
§_paddings: u16
Implementations§
source§impl Inode
impl Inode
sourcepub const INODE_RECORD_SIZE: usize = 256usize
pub const INODE_RECORD_SIZE: usize = 256usize
Size of the inode record in bytes.
From ext2 revision 1, inode size larger than 128 bytes is supported. We use 256 byte here, which is the default value for ext4.
Note that inode “record” size can be larger that inode “structure” size. The gap between the end of the inode structure and the end of the inode record can be used to store extended attributes.
sourcepub const XATTR_AREA_SIZE: usize = 124usize
pub const XATTR_AREA_SIZE: usize = 124usize
Size of the region that inline extended attributes can be written.
pub fn new<'a>( arena: &'a Arena<'a>, group: &mut GroupMetaData<'_>, inode_num: InodeNum, typ: InodeType, size: u32, xattr: Option<InlineXattrs>, ) -> Result<&'a mut Self>
pub fn from_metadata<'a>( arena: &'a Arena<'a>, group: &mut GroupMetaData<'_>, inode_num: InodeNum, m: &Metadata, size: u32, links_count: u16, blocks: InodeBlocksCount, block: InodeBlock, xattr: Option<InlineXattrs>, ) -> Result<&'a mut Self>
fn add_xattr<'a>( arena: &'a Arena<'a>, group: &mut GroupMetaData<'_>, inode: &mut Inode, inode_offset: usize, xattr: InlineXattrs, ) -> Result<()>
pub fn update_metadata(&mut self, m: &Metadata)
pub fn typ(&self) -> Option<InodeType>
Trait Implementations§
source§impl FromBytes for Inodewhere
u16: FromBytes,
u32: FromBytes,
InodeBlocksCount: FromBytes,
InodeBlock: FromBytes,
u8: FromBytes,
impl FromBytes for Inodewhere
u16: FromBytes,
u32: FromBytes,
InodeBlocksCount: FromBytes,
InodeBlock: FromBytes,
u8: FromBytes,
§fn ref_from_bytes(
source: &[u8],
) -> Result<&Self, ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>where
Self: KnownLayout + Immutable,
fn ref_from_bytes(
source: &[u8],
) -> Result<&Self, ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>where
Self: KnownLayout + Immutable,
§fn ref_from_prefix(
source: &[u8],
) -> Result<(&Self, &[u8]), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>where
Self: KnownLayout + Immutable,
fn ref_from_prefix(
source: &[u8],
) -> Result<(&Self, &[u8]), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>where
Self: KnownLayout + Immutable,
§fn ref_from_suffix(
source: &[u8],
) -> Result<(&[u8], &Self), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>where
Self: Immutable + KnownLayout,
fn ref_from_suffix(
source: &[u8],
) -> Result<(&[u8], &Self), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, Infallible>>where
Self: Immutable + KnownLayout,
Interprets the suffix of the given bytes as a
&Self
. Read more§fn mut_from_bytes(
source: &mut [u8],
) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>where
Self: IntoBytes + KnownLayout,
fn mut_from_bytes(
source: &mut [u8],
) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>where
Self: IntoBytes + KnownLayout,
§fn mut_from_prefix(
source: &mut [u8],
) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>where
Self: IntoBytes + KnownLayout,
fn mut_from_prefix(
source: &mut [u8],
) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>where
Self: IntoBytes + KnownLayout,
§fn mut_from_suffix(
source: &mut [u8],
) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>where
Self: IntoBytes + KnownLayout,
fn mut_from_suffix(
source: &mut [u8],
) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, Infallible>>where
Self: IntoBytes + KnownLayout,
source§impl FromZeros for Inodewhere
u16: FromZeros,
u32: FromZeros,
InodeBlocksCount: FromZeros,
InodeBlock: FromZeros,
u8: FromZeros,
impl FromZeros for Inodewhere
u16: FromZeros,
u32: FromZeros,
InodeBlocksCount: FromZeros,
InodeBlock: FromZeros,
u8: FromZeros,
source§impl IntoBytes for Inodewhere
u16: IntoBytes,
u32: IntoBytes,
InodeBlocksCount: IntoBytes,
InodeBlock: IntoBytes,
u8: IntoBytes,
(): PaddingFree<Self, { _ }>,
impl IntoBytes for Inodewhere
u16: IntoBytes,
u32: IntoBytes,
InodeBlocksCount: IntoBytes,
InodeBlock: IntoBytes,
u8: IntoBytes,
(): PaddingFree<Self, { _ }>,
§fn as_mut_bytes(&mut self) -> &mut [u8] ⓘwhere
Self: FromBytes,
fn as_mut_bytes(&mut self) -> &mut [u8] ⓘwhere
Self: FromBytes,
Gets the bytes of this value mutably. Read more
§fn write_to(&self, dst: &mut [u8]) -> Result<(), SizeError<&Self, &mut [u8]>>where
Self: Immutable,
fn write_to(&self, dst: &mut [u8]) -> Result<(), SizeError<&Self, &mut [u8]>>where
Self: Immutable,
source§impl KnownLayout for Inodewhere
u16: KnownLayout,
impl KnownLayout for Inodewhere
u16: KnownLayout,
§type PointerMetadata = <u16 as KnownLayout>::PointerMetadata
type PointerMetadata = <u16 as KnownLayout>::PointerMetadata
The type of metadata stored in a pointer to
Self
. Read moresource§impl TryFromBytes for Inodewhere
u16: TryFromBytes,
u32: TryFromBytes,
InodeBlocksCount: TryFromBytes,
InodeBlock: TryFromBytes,
u8: TryFromBytes,
impl TryFromBytes for Inodewhere
u16: TryFromBytes,
u32: TryFromBytes,
InodeBlocksCount: TryFromBytes,
InodeBlock: TryFromBytes,
u8: TryFromBytes,
§fn try_ref_from_bytes(
source: &[u8],
) -> Result<&Self, ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: KnownLayout + Immutable,
fn try_ref_from_bytes(
source: &[u8],
) -> Result<&Self, ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: KnownLayout + Immutable,
§fn try_ref_from_prefix(
source: &[u8],
) -> Result<(&Self, &[u8]), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: KnownLayout + Immutable,
fn try_ref_from_prefix(
source: &[u8],
) -> Result<(&Self, &[u8]), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: KnownLayout + Immutable,
§fn try_ref_from_suffix(
source: &[u8],
) -> Result<(&[u8], &Self), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: KnownLayout + Immutable,
fn try_ref_from_suffix(
source: &[u8],
) -> Result<(&[u8], &Self), ConvertError<AlignmentError<&[u8], Self>, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: KnownLayout + Immutable,
§fn try_mut_from_bytes(
bytes: &mut [u8],
) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout,
fn try_mut_from_bytes(
bytes: &mut [u8],
) -> Result<&mut Self, ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout,
§fn try_mut_from_prefix(
source: &mut [u8],
) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout,
fn try_mut_from_prefix(
source: &mut [u8],
) -> Result<(&mut Self, &mut [u8]), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout,
§fn try_mut_from_suffix(
source: &mut [u8],
) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout,
fn try_mut_from_suffix(
source: &mut [u8],
) -> Result<(&mut [u8], &mut Self), ConvertError<AlignmentError<&mut [u8], Self>, SizeError<&mut [u8], Self>, ValidityError<&mut [u8], Self>>>where
Self: KnownLayout,
§fn try_read_from_bytes(
source: &[u8],
) -> Result<Self, ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
fn try_read_from_bytes(
source: &[u8],
) -> Result<Self, ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
§fn try_read_from_prefix(
source: &[u8],
) -> Result<(Self, &[u8]), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
fn try_read_from_prefix(
source: &[u8],
) -> Result<(Self, &[u8]), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
§fn try_read_from_suffix(
source: &[u8],
) -> Result<(&[u8], Self), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
fn try_read_from_suffix(
source: &[u8],
) -> Result<(&[u8], Self), ConvertError<Infallible, SizeError<&[u8], Self>, ValidityError<&[u8], Self>>>where
Self: Sized,
impl Copy for Inode
impl Immutable for Inodewhere
u16: Immutable,
u32: Immutable,
InodeBlocksCount: Immutable,
InodeBlock: Immutable,
u8: Immutable,
Auto Trait Implementations§
impl Freeze for Inode
impl RefUnwindSafe for Inode
impl Send for Inode
impl Sync for Inode
impl Unpin for Inode
impl UnwindSafe for Inode
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
source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)