InodeTable

Struct InodeTable 

Source
pub struct InodeTable {
    inodes: HashMap<u64, InodeEntry>,
    path_to_ino: HashMap<PathBuf, u64>,
    real_ino_map: HashMap<u64, u64>,
    query_to_ino: HashMap<String, u64>,
    next_ino: u64,
}
Expand description

Inode table managing virtual and real file mappings.

Fields§

§inodes: HashMap<u64, InodeEntry>

Inode number -> entry

§path_to_ino: HashMap<PathBuf, u64>

Path -> inode for real files

§real_ino_map: HashMap<u64, u64>

Underlying inode -> our inode (for real files)

§query_to_ino: HashMap<String, u64>

Query string -> inode (for query results)

§next_ino: u64

Next available inode

Implementations§

Source§

impl InodeTable

Source

pub fn new() -> Self

Create a new inode table with virtual inodes initialized.

Source

fn init_virtual_inodes(&mut self)

Source

pub fn get(&self, ino: u64) -> Option<&InodeEntry>

Get an inode entry.

Source

pub fn get_or_create_real(&mut self, path: PathBuf, underlying_ino: u64) -> u64

Get or create inode for a real path.

Source

pub fn get_or_create_query_result(&mut self, parent: u64, query: String) -> u64

Get or create inode for a query result.

Source

pub fn lookup(&mut self, ino: u64)

Increment lookup count.

Source

pub fn forget(&mut self, ino: u64, nlookup: u64)

Decrement lookup count.

Source

pub fn is_virtual(&self, ino: u64) -> bool

Check if inode is virtual (part of .ragfs).

Source

pub fn get_by_path(&self, path: &PathBuf) -> Option<u64>

Get inode by path (for real files).

Source

pub fn remove(&mut self, ino: u64)

Remove an inode entry (for deleted files). Only removes real files and query results, not virtual inodes.

Source

pub fn update_path(&mut self, ino: u64, new_path: PathBuf)

Update the path for an existing inode (for renames).

Trait Implementations§

Source§

impl Default for InodeTable

Source§

fn default() -> Self

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

Auto Trait Implementations§

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more