This is what the .txt version of the current i-d in CVS has:
This next example performs an OPEN with the client provided stateid
sid1 and as a result generates stateid sid2. The next operation
specifies the READ with the special all-zero stateid but the current
stateid set by the previous operation is actually used when the
operation is evaluated, allowing correct interaction with any
existing, potentially conflicting, locks.
PUTFH fh1 - -> {fh1, 0}
OPEN R,sid1,"compA" {fh1, sid1} -> {fh2, sid2}
READ 0,0,1024 {fh2, sid2} -> {fh2, sid2}
CLOSE 0 {fh2, sid2} -> {fh2, sid3}
Figure 73
My inference from the above
was that the special stateid of all zeroes was being used to
convey that that current stateid is being used.
But I agree that we need more explicit text. (I assigned this
issue to you because you own the locking piece to the special stateids
are your bailiwick.)
There are 3 choices:
1. define a 3rd special stateid
2. make the current stateid a required aspect of NFSv4.1, and
make PUTSTATEID a new, but required operation. All operations that
currently take a stateid as an argument are to ignore the argument and
instead use the current stateid (which comes from either PUTSTATEID or the
the stateid generating operation).
3. As #2, but replace all operations that take a stateid as an argument with
operations that get the stateid from the current stateid.
|