Wrapfs and the examples in this paper show that useful, non-trivial vnode stackable file systems can be implemented under Linux with minor changes to the rest of the operating system, and with no changes to other file systems. Better performance was achieved by running the file systems in the kernel instead of at user-level.
Estimating the complexity of software is a difficult task. Nevertheless, it is our assertion that with Wrapfs, other non-trivial file systems built from it can be prototyped in a matter of hours or days. We also estimate that Wrapfs can be ported to any operating system in less than one month, as long as the file system has a vnode interface that provides a private opaque field for each of the major data structures used in the file system. In comparison, traditional file system development often takes many months to several years.
Wrapfs saves developers from dealing with many kernel related issues, and allows them to concentrate on the specifics of the file system they are developing. We hope that with Wrapfs and the example file systems we have built, other developers would be able to prototype new file systems to try new ideas, and develop fully working ones -- bringing the complexity of file system development down to the level of common user-level software.
We believe that a truly stackable file system interface could significantly improve portability, especially if adopted by the main Unix vendors and developers. If such an interface becomes popular, it might result in many more practical file systems developed. We hope through this paper to have proven the usefulness and practicality of non-trivial stackable file systems.
One item we would like to add to Wrapfs is support for stackable file systems that change the size of the data, such as with compression. Several initial designs we made indicated a greater level of code complexity and serious performance impact. We opted to hold off on such support for the initial implementation of Wrapfs.