We finally decide to do it in user space, and to fulfill this job through some kernel modifications. We remind here how this solution works (for graphic representation see figure 3.2): a new module interfaces itself to VFS, and will be identified as a new ordinary file system. Then, as it receives ordinary requests from VFS, it delivers messages to a user space server which manages the specific file system and is able to compute the operations. In the end, the answer comes back to the kernel and then to the user who raised the original request.
Currently, among the proposed solutions for user space file system implementation (see section 3.5.1), this seems to be the most natural and clean approach. It is important to keep the file system access point at the lowest level in order to allow all the applications to use it: this solution gives the possibility to build a whole new virtual file system, that can be mounted at a specific location such as an ordinary one. Moreover, we would like PackageFS to work on microkernel operating systems, which are already able to manage file systems in the user space: in these operating systems, there would be no added slowdown, because the total context-switches amount is maintained. In the end, even if applying a kernel patch requires administrator intervention, maybe it will be no needed anymore, because Miklos Szeredi, the FUSE author, is proposing the patch for inclusion in the Linux 2.7 develop branch.
PackageFS has been developed for the LUFS framework, but it even works on FUSE thanks to a special translation daemon called written by Miklos Szeredi. Here we show in depth LUFS and FUSE features, explaining also PackageFS installation and usage to make the reader able to try both them.