fusefs
—
File system in USErspace
To link into the kernel:
options FUSEFS
To load as a loadable kernel module:
kldload fusefs
The fusefs
driver implements a file system that is
serviced by a userspace program.
There are many uses for fusefs
. Userspace
daemons can access libraries or programming languages that cannot run in
kernel-mode, for example. fusefs
is also useful for
developing and debugging file systems, because a crash of the daemon will
not take down the entire operating system. Finally, the
fusefs
API is portable. Many daemons can run on
multiple operating systems with minimal modifications.
The following
sysctl(8)
variables are available:
- vfs.fusefs.kernelabi_major
- Major version of the FUSE kernel ABI supported by this driver.
- vfs.fusefs.kernelabi_minor
- Minor version of the FUSE kernel ABI supported by this driver.
- vfs.fusefs.data_cache_mode
- Controls how
fusefs
will cache file data for
pre-7.23 file systems. A value of 0 will disable caching entirely. Every
data access will be forwarded to the daemon. A value of 1 will select
write-through caching. Reads will be cached in the VFS layer as usual.
Writes will be immediately forwarded to the daemon, and also added to the
cache. A value of 2 will select write-back caching. Reads and writes will
both be cached, and writes will occasionally be flushed to the daemon by
the page daemon. Write-back caching is usually unsafe, especially for FUSE
file systems that require network access.
FUSE file systems using protocol 7.23 or later specify their
cache behavior on a per-mountpoint basis, ignoring this sysctl.
- vfs.fusefs.stats.filehandle_count
- Current number of open FUSE file handles.
- vfs.fusefs.stats.lookup_cache_hits
- Total number of lookup cache hits.
- vfs.fusefs.stats.lookup_cache_misses
- Total number of lookup cache misses.
- vfs.fusefs.stats.node_count
- Current number of allocated FUSE vnodes.
- vfs.fusefs.stats.ticket_count
- Current number of allocated FUSE tickets, which is roughly equal to the
number of FUSE operations currently being processed by daemons.
The fuse
driver was written as the part of the
FreeBSD implementation of the FUSE userspace file
system framework (see
https://github.com/libfuse/libfuse)
and first appeared in the sysutils/fusefs-kmod port,
supporting FreeBSD 6.0. It was added to the base
system in FreeBSD 10.0, and renamed to
fusefs
for FreeBSD 12.1.
The fuse
driver was originally written by
Csaba Henk as a Google Summer of Code project in 2005.
It was further developed by Ilya Putsikau during
Google Summer of Code 2011, and that version was integrated into the base
system by Attilio Rao
<attilio@FreeBSD.org>.
This manual page was written by Alan
Somers
<asomers@FreeBSD.org>.