2011-06-11 07:54:57

by Sid Moore

[permalink] [raw]
Subject: Question about EXCHANGE_ID on server.

Hi

on Linux NFSv4.1 server, nfsd4_exchange_id() is used for creating a
new client incarnation or updating a confirmed client incarnation. if
try to update a confirmed incarnation, EXCHGID4_FLAG_CONFIRMED_R
should be set in eir_flags according to section 18.35.3, RFC5661.

but I found EXCHGID4_FLAG_CONFIRMED_R is cleared by "clid->flags =
new->cl_exchange_flags;", which is in nfsd4_set_ex_flags() called by
nfsd4_exchange_id().

so the sematics of RFC5661 is broken? am I correct?

The code that I browse was newly cloned from
git://linux-nfs.org/~bhalevy/linux-pnfs.git.
--
Sid


2011-06-11 23:59:38

by J. Bruce Fields

[permalink] [raw]
Subject: Re: Question about EXCHANGE_ID on server.

On Sat, Jun 11, 2011 at 03:54:56PM +0800, Sid Moore wrote:
> Hi
>
> on Linux NFSv4.1 server, nfsd4_exchange_id() is used for creating a
> new client incarnation or updating a confirmed client incarnation. if
> try to update a confirmed incarnation, EXCHGID4_FLAG_CONFIRMED_R
> should be set in eir_flags according to section 18.35.3, RFC5661.
>
> but I found EXCHGID4_FLAG_CONFIRMED_R is cleared by "clid->flags =
> new->cl_exchange_flags;", which is in nfsd4_set_ex_flags() called by
> nfsd4_exchange_id().
>
> so the sematics of RFC5661 is broken? am I correct?

On a quick glance.... I think you're correct. Patch welcomed.

--b.