On Wed, 2012-02-15 at 18:13 +0400, Vitaliy Gusev wrote: > >From RFC5661, 18.36.3: > > ca_maxoperations: > > For the backchannel, the server MUST > NOT change the value the client offers. For the fore channel, > the server MAY change the requested value. > > ca_maxrequests: > > For the backchannel, the server MUST NOT change the > value the client offers. For the fore channel, the server MAY > change the requested value. > > Signed-off-by: Vitaliy Gusev <gusev.vitaliy@xxxxxxxxxxx> > --- > fs/nfs/nfs4proc.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > index 5da5355..b144ec3 100644 > --- a/fs/nfs/nfs4proc.c > +++ b/fs/nfs/nfs4proc.c > @@ -5197,7 +5197,7 @@ static int nfs4_verify_fore_channel_attrs(struct nfs41_create_session_args *args > */ > if (rcvd->max_ops < sent->max_ops) > return -EINVAL; > - if (rcvd->max_reqs == 0) > + if (rcvd->max_reqs == 0 || rcvd->max_reqs > NFS4_MAX_SLOT_TABLE) > return -EINVAL; This looks incorrect. If the server offers > NFS4_MAX_SLOT_TABLE slots, the client shouldn't be calling that an error. It should just limit its usage to the first NFS4_MAX_SLOT_TABLE slots. > return 0; > } > @@ -5214,9 +5214,9 @@ static int nfs4_verify_back_channel_attrs(struct nfs41_create_session_args *args > if (rcvd->max_resp_sz_cached > sent->max_resp_sz_cached) > return -EINVAL; > /* These would render the backchannel useless: */ > - if (rcvd->max_ops == 0) > + if (rcvd->max_ops != sent->max_ops) > return -EINVAL; > - if (rcvd->max_reqs == 0) > + if (rcvd->max_reqs != sent->max_reqs) > return -EINVAL; ACK on this hunk... -- 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�����٥