Expand description
FuseMT – A higher-level FUSE (Filesystem in Userspace) interface and wrapper around the
low-level fuser
library that makes implementing a filesystem a bit easier.
FuseMT translates inodes to paths and dispatches I/O operations to multiple threads, and
simplifies some details of filesystem implementation, for example: splitting the setattr
call
into multiple separate operations, and simplifying the readdir
call so that filesystems don’t
need to deal with pagination.
To implement a filesystem, implement the FilesystemMT
trait. Not all functions in it need to
be implemented – the default behavior is to return ENOSYS
(“Function not implemented”). For
example, a read-only filesystem can skip implementing the write
call and many others.
Structs§
- Callback
Result - Dummy struct returned by the callback in the
read()
method. Cannot be constructed outside this crate,read()
requires you to return it, thus ensuring that you don’t forget to call the callback. - Created
Entry - The return value for
create
: contains info on the newly-created file, as well as a handle to the opened file. - Directory
Entry - A directory entry.
- File
Attr - File attributes.
- FuseMT
- Request
Info - Info about a request.
- Statfs
- Filesystem statistics.
Enums§
- File
Type - File types
- Xattr
- Represents the return value from the
listxattr
andgetxattr
calls, which can be either a size or contain data, depending on how they are called.
Constants§
Traits§
- FilesystemMT
- This trait must be implemented to implement a filesystem with FuseMT.
Functions§
- mount
- Mount the given filesystem to the given mountpoint. This function will not return until the filesystem is unmounted.
- spawn_
mount - Mount the given filesystem to the given mountpoint. This function spawns a background thread to handle filesystem operations while being mounted and therefore returns immediately. The returned handle should be stored to reference the mounted filesystem. If it’s dropped, the filesystem will be unmounted.