One of the reasons for working at the vnode level is to achieve portability that, hopefully, would approach that of user level file systems such as Amd. As of this writing, the Wrapfs code is source-portable across Solaris 2.3, 2.4, and 2.5 on both the SPARC and x86 architectures. It is also binary compatible across Solaris 2.4 and 2.5 (SPARC architecture). Loadable kernel modules are rarely binary compatible across operating system revisions, as was mentioned in Skinner and Wong's work [Skinner93].
I started this work with proprietary Solaris kernel sources. I extracted from these sources the minimum requirements for building file system modules, and then rewrote the code. At this point, I no longer require any access to proprietary sources.
In addition, I was able to move away from using proprietary build tools. Rather than using Sun's commercial ``SPARCcompiler'' suite of build tools, I now exclusively use freely available GNU tools such as gcc, gmake, and the GNU linker and assembler. I was surprised and pleased to find that the latest GNU tools were able to properly build and link Solaris kernel modules.
For more details on how I will achieve portability using GNU Autoconf [MacKenzie95], see Appendix sec-appendix-autoconf.