logo
Published on KernelTrap (http://kerneltrap.org)

Linux: Filesystem In Userspace

By Jeremy
Created Jan 10 2005 - 22:32

Miklos Szeredi provided patches against the 2.6.10 Linux kernel [story [1]] for FUSE [2], "Filesystem In Userspace". Aptly named, "FUSE exports the filesystem functionality to userspace. The communication interface is designed to be simple, efficient, secure and able to support most of the usual filesystem semantics."

Originally developed for the AVFS [3] project, FUSE has since been utilized by a growing list [4] of userland filesystems. Some interesting examples include the FunFS [5] network filesystem aiming "to be better than NFS", the EncFS [6] encrypted filesytem, the Python-based GmailFS [7] which turns a gmail account into a storage medium, the Phonebook [8] filesystem offering "Deniable Encryption technology", and the Wayback [9] versioning filesystem. The aim is to get the FUSE kernel module merged into the mainline Linux kernel.





From: Miklos Szeredi [email blocked]
To:  akpm, [email blocked]
Subject: [PATCH 0/11] FUSE - Filesystem in Userspace
Date: 	Mon, 10 Jan 2005 19:53:59 +0100

Andrew, Linus,

Please apply the following patches, which add Filesystem in Userspace
to the kernel.  The patches are against 2.6.10.

FUSE [1] exports the filesystem functionality to userspace.  The
communication interface is designed to be simple, efficient, secure
and able to support most of the usual filesystem semantics.

It can be used for prototyping and for network/virtual filesystems
requiring external libraries or programs.  A typical example is sshfs
[2] which uses the sftp protocol and allows zero-setup mounting of
remote sites.

FUSE is currently in use by dozens of publicly available filesystems
[3], and by many in-house applications.  It has proved useful and
stable for lots of users.

Thanks to everyone for the comments on the last submission.  Changes
since then are:

 - Made it Deadlock Free (TM).  This includes removing support for
   shared writable mapping and making all requests interruptible.

 - Removed INVALIDATE userspace initiated request, this is probably
   not used by any application.

 - Updated ABI to be independent of sizeof(long), so dual-size archs
   don't cause problems

 - Remove /sys/fs/fuse/version.  Version checking is now done through
   the fuse device

The patch is split up to the following parts:

  01 [10] - MAINTAINERS, Kconfig and Makefile changes
  02 [11] - FUSE core
  03 [Array] - FUSE device functions
  04 [12] - read-only operations (getattr, readlink, readdir, ...)
  05 [13] - read-write operations (setattr, mkdir, symlink, ...)
  06 [14] - file operations (open, read, write, ...)
  07 [15] - mount options controlling the behavior of the filesystem
  08 [16] - extended attribute operations (getxattr, setxattr, ...)
  09 [17] - readpages operation
  10 [18] - NFS export support
  11 [Array] - direct I/O support

Thanks,
Miklos

[1] http://fuse.sourceforge.net/ [19]

[2] http://sourceforge.net/project/showfiles.php?group_id=121684&package_id=140425 [20]

[3] http://fuse.sourceforge.net/filesystems.html [21]



Related Links:


Source URL:
http://kerneltrap.org/node/4517