Subject: [nfsv4] draft22 stateid question

From: Fredric Isaman <[email-masked]>
Date: Sat, 10 May 2008 14:46:13 -0400 (EDT)

In 8.2.3, regarding the current stateid (cid):
If there is no operation in the COMPOUND which has returned a stateid 
value, the server MUST return the error NFS4ERR_BAD_STATEID.

In 16.2.3.1.2:
If an operation sets the current filehandle but does not return a stateid, 
the current stateid MUST be set to the all-zeros special stateid

So...using an example simliar to that in 16.2.3.1.2:
     PUTFH fh1                             - -> {fh1, (0, 0)}
     READ (cid), 0, 1024       {fh1, (0, 0)} -> ?????????????

If I take 8.2.3 literally, the READ must return NFS4ERR_BAD_STATEID.
Is this what is intended?

I suspect that a more reasonable interpretation is that the PUTFH 
"returned" a zero stateid, in which case the first sentence should read 
something like:

If there is no operation in the COMPOUND which has set the current 
stateid, the server MUST return the error NFS4ERR_BAD_STATEID.

 	Fred

_______________________________________________
nfsv4 mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/nfsv4

---

From: "Mike Eisler" <[email-masked]>
Date: Sat, 10 May 2008 13:59:10 -0700 (PDT)

> Is this what is intended?

I don't know what you mean by (cid).

If you mean the special stateid that means the current stateid,
then,

       PUTFH fh1                             - -> {fh1, (0, 0)}
       READ (1,0), 0, 1024       {fh1, (0, 0)} -> NFS4ERR_BAD_STATEID

is indeed required. The special stateid (0,0) while valid as
as the anonymous stateid, can only be passed explicitly, not
implicity becuase the (1,0) stateid.

I will add text that requires the other special stateids to be
passed explicitly.

-- 
Mike Eisler, Senior Technical Director, NetApp, 719 599 9026,
http://blogs.netapp.com/eislers_nfs_blog/