The Art of Coexistant File Sharing in OpenSolaris
By bobp on Nov 26, 2007
Today any OS needs to provide support for the 2 dominant file sharing protocols in the industry (NFS and CIFS). While there are good implementations such as SAMBA which run "On" the OS in user space, ideally you want both file sharing protocols to run portions of the implementation "In" the kernel. Now that OpenSolaris has a kernel based CIFS server along side NFS, I want to give kudos to a few people who made it a reality. Keep in mind implementing any file protocol in any kernel is difficult. When you introduce both Windows and OpenSolaris together at the kernel level one can appreciate the complexities introduced to coexist. Coexist has the caveat that code gets added in a seamless fashion and that services are not negatively impacted by this new foreign object. Fundamental items such as the file system, security, permissions, marshaling, etc., play an important part in making the seamless coexistence a technical mountain to climb. That said the OpenSolaris team solved some pretty significant technical issues to make the CIFS Server in OpenSolaris available to anyone. Despite some self proclaimed experts insisting the feat would never be accomplished, I'll point you to a few folks who know how to collaborate, innovate and in some instances dictate how to "get it done." You can see for yourself the numerous ARC (~35) cases sponsored and approved as well as some intricate details of how problems were solved. You can hear from the developers directly and since OpenSolaris is open sourced-- peruse ~370 thousands of lines of code that are now part of OpenSolaris. Let's start with Mike Shapiro and Alan M. Wright. One is a Patriots and Red Sox fan (like me) and the other is fond of rugby (unlike me... I like the Patriots). Both are top notch engineers who can architect with ease and crank out massive amounts of code... that just works. Mike and Alan cracked a heck of a technical problem (yes these are the hard problems that motivate them both) with respect to "Unified POSIX and Window Credentials for Solaris." Mike describes the problem in detail on a recent post at his blog. Alan takes us through, via his blog, the evolution of how a fully integrated CIFS service was integrated into OpenSolaris. He is very literate on topics such as SMB autohome shares and why they evolved. Let's not forget about Afshin, Doug and Nico. All quite literate as well on the details of the hows and whys of a fully integrated CIFS service into OpenSolaris that was not just munged to sort of work. From an architectural perspective numerous design requirements were diligently reviewed. Take for example endianness. The CIFS protocol is sensitive to the x86 processor endian order of significance. However careful care was taken to enable the CIFS protocol in OpenSolaris to work on both big-endian and little-endian architectures by putting intelligence into marshaling. So that means that the OpenSolaris CIFS Server will run on a SPARC-based platform if a community member were to build an appliance or simply run the service as part of a general purpose server. Yes Niagara-II and Rock microprocessors work as it is part of OpenSolaris architecture conformance. What other open sourced OS supports a kernel based CIFS service that runs on both big and little endian machines?