tags : Filesystems

Intro

  • Traditionally filesystems were created as kernel drivers/modules. And as we said..the kernel runs in ring 0 with full access.
  • Fuse is a kernel layer that allows the kernel to use filesystem implementions written in userpace. In other words, allows the kernel to redirect filesystem calls to a userspace (ring 3) implementation.
  • You can write your whole filesystem as userspace application, register it with the kernel and if a program tries to open a file from your filesystem the kernel asks your implementation to do it.

Pro

  • We gain security and make creating filesystems a lot easier.

Con

  • Speed. But if making a network file system, we cannot care less, right?
  • Fuse filesystems can do much less than filesystems that are kernel modules.
  • You cannot do stuff like send commands over the SATA bus to communicate with the HDD directly. FS which are kernel modules are capable of this.

Resources