[cifs-protocol] clarification of MaxMpx value in MS-CIFS

Josh Curry Josh.Curry at microsoft.com
Thu Mar 1 13:50:40 MST 2012

Hi Jeff, thank you for your question. A member of the protocol documentation team will be in touch with you soon.

Josh Curry | Escalation Engineer | Open Specifications Support Team
P +1 469 775 7215
One Microsoft Way, 98052, Redmond, WA, USA http://support.microsoft.com

-----Original Message-----
From: Jeff Layton [mailto:jlayton at poochiereds.net] On Behalf Of Jeff Layton
Sent: Thursday, March 01, 2012 1:20 PM
To: Interoperability Documentation Help; pfif at tridgell.net; cifs-protocol at samba.org
Subject: clarification of MaxMpx value in MS-CIFS

Dearest Dochelp...

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 exempted?

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 mailing list