We are excited to announce that Haiku developer Ingo Weinhold has recently committed UserlandFS to the repository. UserlandFS is designed to provide, for the first time in Haiku (and the BeOS platform), a stable and flexible environment for file system add-on development. Along with UserlandFS, Ingo has also committed several file system modules, including a Reiser FS 3.6 read-only implementation, a RAM FS (which is still work in progress), and NetFS, a Haiku-specific networking file system. NetFS is a native Haiku network file system that provides peer-to-peer networking capabilities for computers running Haiku on a LAN and includes full support for BFS attributes and live queries.
NetFS running in BeOS R5
In its current state, UserlandFS is coded to work in BeOS R5, but it will soon be ported to work with the new Haiku file system interface (which is slightly modified implementation from that of BeOS R5). It is hoped that the availability of UserlandFS will accelerate development of more file system add-ons for Haiku.
While a userland debugging "shell" for FS development already exists for Haiku, it has some limitations that can be avoided by using UserlandFS instead. The "FS shell" emulates the relevant part of the kernel (the complete VFS layer) and provides a CLI interface with several testing commands. UserlandFS instead offers the ability to use any application or test program with your FS directly e.g. the Tracker and results in the same access patterns you would expect with the file system running in the kernel.
According to Ingo, "the UserlandFS interface is identical to that of the kernel FS interface. Having the kernel interface as an option is particularly nice for developers who want to write a file system for the kernel. They can develop, test and debug in userland, and then just recompile for the kernel. Not only can a buggy FS running in userland not cause KDLs, but the debugging facilities available in userland are also way more comfortable (break/watch points, single stepping, etc.)".
NetFS is currently a working implementation already, and it provides all functionality that could be expected from a file system under Haiku with the use of attribute and live query support. Still missing is a preferences GUI to configure NetFS, so for now server side shares and user permissions are defined using a config file. The client is also capable of automatically locating other servers on the LAN.