pub trait Filesystem {
type Error: Into<Error>;
// Required methods
fn lookup<'life0, 'life1, 'async_trait>(
&'life0 self,
parent: u64,
name: &'life1 OsStr,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn getattr<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn setattr<'life0, 'async_trait>(
&'life0 mut self,
ino: u64,
size: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn readdir<'life0, 'async_trait>(
&'life0 self,
ino: u64,
offset: u64,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn Iterator<Item = DirEntry> + Send + Sync + '_>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read<'life0, 'async_trait>(
&'life0 self,
ino: u64,
fh: u64,
offset: i64,
size: u32,
) -> Pin<Box<dyn Future<Output = Result<Bytes, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn write<'life0, 'async_trait>(
&'life0 self,
ino: u64,
fh: u64,
data: Bytes,
offset: i64,
) -> Pin<Box<dyn Future<Output = Result<u32, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn create<'life0, 'async_trait>(
&'life0 mut self,
parent: u64,
name: OsString,
mode: u32,
umask: u32,
flags: i32,
) -> Pin<Box<dyn Future<Output = Result<(FileAttr, u64), Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn mkdir<'life0, 'async_trait>(
&'life0 mut self,
parent: u64,
name: OsString,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
// Provided methods
fn destroy<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>
where Self: Send + 'async_trait,
'life0: 'async_trait { ... }
fn open<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
_flags: i32,
) -> Pin<Box<dyn Future<Output = Result<u64, Self::Error>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
fn release<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
_fh: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
fn inodes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<BTreeSet<u64>, Self::Error>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait { ... }
}
Expand description
Base trait providing asynchronous functions for the system calls.
WARNING: The crate::FilesystemFUSE
struct encapsulates implementors in a RwLock
.
Therefore, care should be taken to not introduce deadlocks.
An example would be if open
waits on a release
(e.g. to limit the number of open
files), but the open
acquires a write lock before any release
.
Required Associated Types§
Required Methods§
Sourcefn lookup<'life0, 'life1, 'async_trait>(
&'life0 self,
parent: u64,
name: &'life1 OsStr,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn lookup<'life0, 'life1, 'async_trait>(
&'life0 self,
parent: u64,
name: &'life1 OsStr,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Lookup an entry by name in a directory. See also fuser::Filesystem::lookup
.
Sourcefn getattr<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn getattr<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get attributes on an entry. See also fuser::Filesystem::getattr
.
Sourcefn setattr<'life0, 'async_trait>(
&'life0 mut self,
ino: u64,
size: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn setattr<'life0, 'async_trait>(
&'life0 mut self,
ino: u64,
size: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<FileAttr, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Set attributes. Currently only supports setting the size
Sourcefn readdir<'life0, 'async_trait>(
&'life0 self,
ino: u64,
offset: u64,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn Iterator<Item = DirEntry> + Send + Sync + '_>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn readdir<'life0, 'async_trait>(
&'life0 self,
ino: u64,
offset: u64,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn Iterator<Item = DirEntry> + Send + Sync + '_>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Read a directory.
To be called repeatedly by specifying a gradually increasing offset,
until the returned iterator is empty. A minimum of two calls is required
to be certain that the end has been reached.
offset
represents the index of the starting element.
See also fuser::Filesystem::readdir
.
Sourcefn read<'life0, 'async_trait>(
&'life0 self,
ino: u64,
fh: u64,
offset: i64,
size: u32,
) -> Pin<Box<dyn Future<Output = Result<Bytes, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn read<'life0, 'async_trait>(
&'life0 self,
ino: u64,
fh: u64,
offset: i64,
size: u32,
) -> Pin<Box<dyn Future<Output = Result<Bytes, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Read from a file. See also fuser::Filesystem::read
.
Sourcefn write<'life0, 'async_trait>(
&'life0 self,
ino: u64,
fh: u64,
data: Bytes,
offset: i64,
) -> Pin<Box<dyn Future<Output = Result<u32, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn write<'life0, 'async_trait>(
&'life0 self,
ino: u64,
fh: u64,
data: Bytes,
offset: i64,
) -> Pin<Box<dyn Future<Output = Result<u32, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Write to file. See also fuser::Filesystem::write
.
Sourcefn create<'life0, 'async_trait>(
&'life0 mut self,
parent: u64,
name: OsString,
mode: u32,
umask: u32,
flags: i32,
) -> Pin<Box<dyn Future<Output = Result<(FileAttr, u64), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create<'life0, 'async_trait>(
&'life0 mut self,
parent: u64,
name: OsString,
mode: u32,
umask: u32,
flags: i32,
) -> Pin<Box<dyn Future<Output = Result<(FileAttr, u64), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create and open a file. See also fuser::Filesystem::create
.
Provided Methods§
Sourcefn destroy<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
fn destroy<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
Close filesystem. See also fuser::Filesystem::destroy
.
Sourcefn open<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
_flags: i32,
) -> Pin<Box<dyn Future<Output = Result<u64, Self::Error>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn open<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
_flags: i32,
) -> Pin<Box<dyn Future<Output = Result<u64, Self::Error>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Open a file and get a handle. See also fuser::Filesystem::open
.
Sourcefn release<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
_fh: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn release<'life0, 'async_trait>(
&'life0 self,
_ino: u64,
_fh: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Release a file handle. See also fuser::Filesystem::release
.
Sourcefn inodes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<BTreeSet<u64>, Self::Error>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn inodes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<BTreeSet<u64>, Self::Error>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Get the set of inodes from the filesystem.
Implementors can usually provide a more efficient implementation than the blanket one, which performs BFS from the root.