Re: smb2pdu.c merged

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 8, 2011 at 5:29 AM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> Sorry Steve,
>
> first you need to explain why a totall different protocol is better
> suited stuffed into the fucking mess than the cifs module than a clean
> start.  Second you absolutely need to post patches for review before
> commiting them.  While others are cleaning up the mess you
> singlehandedly are making it worse constantly.  It can't go on that way
> much longer.

Jeff's note may have explain more background, on some of your
questions.

I agree the code needs cleanup - that is why it is currently marked
as config EXPERIMENTAL and BROKEN.    The original prototype
was a distinct module (the smb2.ko from the smb2.git tree on kernel.org)
and had been tested at the previous 3 test events.  It would rely on a
cifs_common directory to allow cifs and smb2 to share some (perhaps
1/3) library functions.  In that implementation
I had done more aggressive cleanup (removing all camel case e.g., some
other structural changes are now in cifs.ko)  It passed some basic
file system tests
in its old form but was not complete.   I had favored keeping the smb2
support in a distinct module to allow more aggressive rewrite of some
common areas without risking cifs.ko stability and also because
the SMB2 protocol differs from the cifs protocol in many ways
(it is not really a "dialect" of the same protocol)
but had feedback from Jeff Layton and informally
from Andrew Morton to keep it in cifs.ko to make code reuse easier.
At Connectathon Jeff, Jeremy Allison, and I met again, also talking
with the nfs developers, and reached what seems like a
reasonable compromise which will keep the cifs code stable
while getting the experimental smb2 code

- move from two binaries (cifs.ko and smb2.ko)  to one with
a common fs type (still cifs), but require that the version be passed
in on mount (to use smb2)
- make modest changes to cifs structures to handle smb2 specific
needs (various new fields in the key global structures,
socket/session/tree-connect)
- move smb2 code from the prototype to smb2 specific files
in cifs.ko (configurable by ifdef) and clean it up as we go

Jeff and others have done some reasonable cleanup on cifs.ko
over the last three years so getting the smb2
code in tree is important so it can take advantage of some of
the good cleanup done in session establishment, socket
handling and name resolution in particular.

After working on the port, I am seeing more code reuse than
I expected, but there is significant cleanup needed.  SMB2
code is badly needed.  It is a much better protocol than
cifs (not just because of security and scalability improvements)
and better than nfs in some areas as well.   With code
upstream, at least those we can make progress, rather than
continually having to backport global fixes back.   The prototype
showed some interesting performance characteristics.  Pavel's
summer of code work on the smb2.git tree got performance
of sequential write faster than nfs, and Jeremy Bongio's patches
earlier in the year did the same for  the readpages path.  This
will require rework, but I think is worth getting in experimental
code so we can make progress.

I welcome cleanup ideas (and patches of course) - but it is
going to take a few weeks to get the original port converted
to the new structure.


-- 
Thanks,

Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux