newuserfs -- a way to write Linux 2.4 filesystems in userspace servers This package allows userspace programs to provide Linux filesystems. It consists of several parts: - A kernel module "userfs.o", that provides a "userfs" filesystem and implements it by inter-process calls back to userspace. (At the moment only building as a kernel is supported.) - A binary protocol that runs between the two over sockets or pipes: it is basically an externalized form of the kernel VFS layer with some tweaks. - A "mtuserfs" utility that sets up sockets, launches a server program, and mounts a filesystem. - libuserfs, a library for implementing servers - Some sample servers: - remap, which points to another directory The concepts are derived from Jeremy Fitzhardinge's "userfs" for Linux 2.2, although most of the code has been rewritten and the IPC protocol is not compatible. The code is very young, and not guaranteed to do anything at all. The protocol from the server to the kernel is architecture-dependent. Although it would be possible to fix endianness and size constraints and therefore allow servers to run on different machines this is not really meant to be a network filesystem protocol, and fixing the protocol to the native format makes the code simpler and faster. You can always transform it in a local proxy. ----------- How to get started with userfs: 1. Build the module, and install it $ cd module $ make # insmod ./userfs.o You should see a greeting message in /var/log/kern, or wherever you send kernel messages. 2. Build mtuserfs $ cd ../mtuserfs $ make 3. Mount a the filesystem # mkdir /mnt/foo # ./mtuserfs /mnt/foo ../python/userfs.py At the moment all this will give is an error, since not enough of the protocol is implemented to get it up and running. But you get the idea...