Jeremy Allison : Samba Team
But isn't CIFS documented ?
• SNIA document does a basic job.
– Enough to get an implementor started.
– Roger Binns (VisionFS author) quote: “Anyone
following the CIFS spec has a beautiful server
no clients will interoperate with”.
• However it is very incomplete.
– Doesn't cover older Windows clients
– Doesn't cover OS/2 clients, or newer clients
like Linux or MacOS X
– Doesn't have the details needed to correctly
write a server for Windows clients.
What about the “licensed”
• Can't accurately comment as Microsoft
licensing terms prohibit Free Software from
• NetApp presentation implied the “Microsoft”
CIFS document is similar to the SNIA one.
• Licensees have to help Microsoft debug the
document they paid for !
• Still many details missing.
Why is CIFS so hard to
• Partly Microsoft intransigence
– “Private protocol” easier to extend arbitrarily
and preserve barriers to interoperability.
• Partly historical
– CIFS covers many old clients no longer in wide
use or testing, few resources are allocated to
• Partly due to client to server homogeneity.
– CIFS became “Windows NT kernel on the wire”
semantics. Windows kernel features exposed.
How can Samba help
document CIFS ?
• tridge had the epiphany several years ago.
• Don't follow any published specification.
– Create client test suite and tools to test any
theory about the “correct” behavior of CIFS
– Take the “latest” Microsoft server (currently
Windows 2003 Service Pack 1) as the
– Samba4 client suite and torture tester is the
Presenting some of the results of the torture
tester, as implemented in Samba3 and
“Ornery” open modes
• If a second open on a file would cause a
“sharing violation” error message, the
server must delay processing the second
open by approximately one second to allow
the client to close the currently open
– Used extensively by Microsoft Office.