[cifs-protocol] clarification of MaxMpx value in MS-CIFS
jlayton at samba.org
Thu Mar 1 12:19:44 MST 2012
We in the Linux CIFS client community are attempting to clean up our
code to make it better respect the MaxMpxCount value that the server
advertises in the NEGOTIATE request.
MS-CIFS currently says this:
> MaxMpxCount (2 bytes): The maximum number of outstanding SMB operations
> that the server supports. This value includes existing OpLocks, the
> NT_TRANSACT_NOTIFY_CHANGE subcommand, and any other commands that are
> pending on the server.
It is rumored however that servers are not supposed to count certain
command types against this limit. For instance, SMB echoes and blocking
locks. My questions are:
1/ what do windows servers do in this regard? Do they count all
outstanding requests against the maxmpx value, or are certain commands
2/ do windows clients ever send more than MaxMpxCount requests at a
time? For instance, suppose I have a MaxMpxCount of 50 and I spawn 100
threads that attempt to acquire blocking locks. What happens at that
point? Will the client end up using all of the slots for blocking locks
in such a way that nothing else can get through? Or does it allow you
to exceed that value somehow?
Thanks for the info!
Jeff Layton <jlayton at samba.org>
More information about the cifs-protocol