Have you ever come across a similar entry as below in /proc/mounts and wondered which filesystem resides on the block device?
/dev/sda1 on /mnt/sda1 type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
It’s impossible to say by just the above entry. Because the actual filesystem on the device is written on top of the FUSE library. A well-known example of a filesystem using FUSE is ntfs-3g which comes with nearly all Linux distros nowadays to support NTFS filesystem. FUSE can be considered as an additional driver layer communicating with the kernel VFS and translating the userspace filesystem operations (written using the FUSE library) to kernel space. Here’s a simple example of a filesystem written using FUSE. As you can see, the procedure is similar to writing a regular kernel module but the key structure containing the fuse function pointers is fuse_operations.