Filesystem in Userspace

This is achieved by running file system code in user space while the FUSE module provides only a bridge to the actual kernel interfaces.

[8] The userspace side of FUSE, the libfuse library, generally followed the pace of Linux kernel development while maintaining "best effort" compatibility with BSD descendants.

[9] A break in libfuse history is libfuse3, which includes some incompatible improvements in the interface and performance, compared to the older libfuse2 now under maintenance mode.

On the other hand, libfuse and its many ports provide a portable high-level interface that may be implemented on a system without a "FUSE" facility.

Conventional on-disk file systems can be implemented in user space with FUSE, e.g. for compatibility or licensing reasons.

A flow-chart diagram showing how FUSE works: Request from userspace to list files (ls -l /tmp/fuse) gets redirected by the Kernel through VFS to FUSE. FUSE then executes the registered handler program (./hello) and passes it the request (ls -l /tmp/fuse). The handler program returns a response back to FUSE which is then redirected to the userspace program that originally made the request.
Unmounting a FUSE-based file system with the fusermount command