One of the books on advanced linux programming states:
The /proc/filesystems
entry displays the file system types known to the kernel. Note that this list isn't very useful because it is not complete: File systems can be loaded and unloaded dynamically as kernel modules.The contents of /proc/filesystems
list only file system types that either are statically linked into the kernel or are currently loaded. Other file system types may be available on the system as modules but might not be loaded yet.
Now, I have:
➜ ~ ps -C sshfs
PID TTY TIME CMD
8123 ? 00:00:00 sshfs
➜ ~ mount | grep sshfs
root@ss1: on /home/wani/tmp type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
➜ ~
But ...
➜ ~ cat /proc/filesystems | grep sshfs
➜ ~
sshfs
is implemented in userspace using the FUSE infrastructure. Userspace filesystems are not known to the kernel as a separate entity. The FUSE kernel-side infrastructure itself, however, is known to the kernel. On my system:
$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
...
ext4
cramfs
...
nodev fuse
nodev fusectl
...
Note the last two lines; the kernel is aware of a fuse
filesystem, which is essentially an adapter interface that lets filesystem services to be provided by userspace processes.