ReFUSE: Userspace FUSE Reimplementation Using puffs by Antti Kantee and Alistair Crooks
Channel: EuroBSDcon
Date: 2020-07-05

Work on puffs (pass-to-userspace framework file system) was initiated in 2005 to provide means to implement file systems in userspace on NetBSD. Ease of use and ability to employ user-level debugging tools to develop kernel-level functionality led to the quick development of a number of file systems - sysctlfs, psshfs and others.

In the Linux world, the corresponding user space file system facilitator is FUSE, and there are a large number of readily available file systems written for FUSE. This talk outlines refuse, a BSD-licensed re-implementation of the higher-level FUSE interface, on top of libpuffs, the user level component of puffs. refuse provides source code compatibility with FUSE applications.

The talk analyses the structure of the FUSE interfaces, and explains how these were mapped into the puffs interface. Some benefits and drawbacks of each implementation are presented. The relative merits of FUSE and puffs are examined, and some lessons learned from the refuse implementation are drawn. We then present a list of the FUSE filesystems, such as ntfs-3g, which will run by means of refuse, and examine what extra work needs to be done to allow extra file systems to work.

Finally, some areas of extension for puffs (and thus, refuse-based file systems) are proposed, such as the ability to have plan9-like communication between puffs filesystems running on different machines, and also an extension to provide the kernel device-driver interface to user level by extending the operations exported by puffs.


Antti Kantee is a NetBSD developer. His most important contribution to the project is keeping the Nethack package in pkgsrc up to date. Given that the latest release of Nethack came out in 2003, he has been forced to find other ways to keep himself busy, and has lately enjoyed quality sessions with the pass-to-userspace framework file system (puffs). In his spare time, when not plucking his Redmond-made guitar, cooking, eating or otherwise daydreaming about food, Antti is doctoral student at the Helsinki University of Technology.

Alistair Crooks is a NetBSD developer, and became part of the core team around 931550000. He has also been president of the NetBSD Foundation for over 50 fortnights. His contributions include pkgsrc, the user(8) user management suite, the NetBSD iSCSI target, and has now crowned all his achievements with the refuse described in this paper. He lives in the UK with his wife, children and guitars.