On Mon, 2013-07-22 at 19:52 +0000, Adamson, Andy wrote: > On Jul 22, 2013, at 3:17 PM, "Myklebust, Trond" <Trond.Myklebust@xxxxxxxxxx> > wrote: > > The problem is that once you implement dynamic slot tables, the > > negotiated session slot table size becomes the _minimum_ number of > > slots. > > Could you explain this a bit more? I'd like to understand your reasoning. I can see that the dynamic session goal is to end up with the highest_slotid value to be just high enough to meet the actual load, but not waste server slot resources. But I don't understand why the client value of ca_maxrequests makes a difference in the dynamic sessions case because whether the client starts high or low, the server will adjust the value to one that fits the load. If all clients supported dynamic slot tables, then there would be no problems with the server lowering the number of slots beyond the value negotiated at session creation time. The problems occur if there are clients out there that don't support dynamic slots, and that fail to inspect the sr_target_highest_slotid and sr_highest_slotid for changes (the Linux client used to behave this way). If the server then lowers sr_highest_slotid to be less than the initial value, then the client won't realise it has fewer slots, and will end up receiving NFS4ERR_BADSLOT errors that it doesn't know how to handle. IOW: the only safe behaviour for a server in that case is to treat the initial value as the minimum value for sr_highest_slotid and sr_target_highest_slotid. -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥