Struct ext2::inode::Inode

source ·
#[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

source

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.

source

pub const XATTR_AREA_SIZE: usize = 124usize

Size of the region that inline extended attributes can be written.

source

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>

source

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>

source

fn add_xattr<'a>( arena: &'a Arena<'a>, group: &mut GroupMetaData<'_>, inode: &mut Inode, inode_offset: usize, xattr: InlineXattrs ) -> Result<()>

source

pub fn update_metadata(&mut self, m: &Metadata)

source

pub fn typ(&self) -> Option<InodeType>

Trait Implementations§

source§

impl AsBytes for Inode
where u16: AsBytes, u32: AsBytes, InodeBlocksCount: AsBytes, InodeBlock: AsBytes, u8: AsBytes, HasPadding<Inode, { _ }>: ShouldBe<false>,

§

fn as_bytes(&self) -> &[u8]

Gets the bytes of this value. Read more
§

fn as_bytes_mut(&mut self) -> &mut [u8]
where Self: FromBytes,

Gets the bytes of this value mutably. Read more
§

fn write_to(&self, bytes: &mut [u8]) -> Option<()>

Writes a copy of self to bytes. Read more
§

fn write_to_prefix(&self, bytes: &mut [u8]) -> Option<()>

Writes a copy of self to the prefix of bytes. Read more
§

fn write_to_suffix(&self, bytes: &mut [u8]) -> Option<()>

Writes a copy of self to the suffix of bytes. Read more
source§

impl Clone for Inode

source§

fn clone(&self) -> Inode

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Inode

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Inode

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl FromBytes for Inode
where u16: FromBytes, u32: FromBytes, InodeBlocksCount: FromBytes, InodeBlock: FromBytes, u8: FromBytes,

§

fn ref_from(bytes: &[u8]) -> Option<&Self>
where Self: Sized,

Interprets the given bytes as a &Self without copying. Read more
§

fn ref_from_prefix(bytes: &[u8]) -> Option<&Self>
where Self: Sized,

Interprets the prefix of the given bytes as a &Self without copying. Read more
§

fn ref_from_suffix(bytes: &[u8]) -> Option<&Self>
where Self: Sized,

Interprets the suffix of the given bytes as a &Self without copying. Read more
§

fn mut_from(bytes: &mut [u8]) -> Option<&mut Self>
where Self: Sized + AsBytes,

Interprets the given bytes as a &mut Self without copying. Read more
§

fn mut_from_prefix(bytes: &mut [u8]) -> Option<&mut Self>
where Self: Sized + AsBytes,

Interprets the prefix of the given bytes as a &mut Self without copying. Read more
§

fn mut_from_suffix(bytes: &mut [u8]) -> Option<&mut Self>
where Self: Sized + AsBytes,

Interprets the suffix of the given bytes as a &mut Self without copying. Read more
§

fn slice_from(bytes: &[u8]) -> Option<&[Self]>
where Self: Sized,

Interprets the given bytes as a &[Self] without copying. Read more
§

fn slice_from_prefix(bytes: &[u8], count: usize) -> Option<(&[Self], &[u8])>
where Self: Sized,

Interprets the prefix of the given bytes as a &[Self] with length equal to count without copying. Read more
§

fn slice_from_suffix(bytes: &[u8], count: usize) -> Option<(&[u8], &[Self])>
where Self: Sized,

Interprets the suffix of the given bytes as a &[Self] with length equal to count without copying. Read more
§

fn mut_slice_from(bytes: &mut [u8]) -> Option<&mut [Self]>
where Self: Sized + AsBytes,

Interprets the given bytes as a &mut [Self] without copying. Read more
§

fn mut_slice_from_prefix( bytes: &mut [u8], count: usize ) -> Option<(&mut [Self], &mut [u8])>
where Self: Sized + AsBytes,

Interprets the prefix of the given bytes as a &mut [Self] with length equal to count without copying. Read more
§

fn mut_slice_from_suffix( bytes: &mut [u8], count: usize ) -> Option<(&mut [u8], &mut [Self])>
where Self: Sized + AsBytes,

Interprets the suffix of the given bytes as a &mut [Self] with length equal to count without copying. Read more
§

fn read_from(bytes: &[u8]) -> Option<Self>
where Self: Sized,

Reads a copy of Self from bytes. Read more
§

fn read_from_prefix(bytes: &[u8]) -> Option<Self>
where Self: Sized,

Reads a copy of Self from the prefix of bytes. Read more
§

fn read_from_suffix(bytes: &[u8]) -> Option<Self>
where Self: Sized,

Reads a copy of Self from the suffix of bytes. Read more
source§

impl FromZeroes for Inode
where u16: FromZeroes, u32: FromZeroes, InodeBlocksCount: FromZeroes, InodeBlock: FromZeroes, u8: FromZeroes,

§

fn zero(&mut self)

Overwrites self with zeroes. Read more
§

fn new_zeroed() -> Self
where Self: Sized,

Creates an instance of Self from zeroed bytes. Read more
source§

impl Copy for Inode

Auto Trait Implementations§

§

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.