Hi, David.
Thanks for the response.
A couple of comments below...
Regards,
Elwyn
On 01/12/14 18:50, David Noveck wrote:
My view (remains) that if the cookie is not tied to the change
attribute of the directory, this makes life difficult for both the
server (what does it send if the data has been changed and how does
it manage maintaining checkpoints -- where a readdir finished --, in
particular if the checkpoint was on an entry that has been deleted),
and the client.
The cookie is not tied to the change attribute of the directory.
The purpose of the cookie is ensuring that you do a READDIR that
encompasses multiple requests:
* entries that exist during the entire period of the multi-requuest
directory read appear exactly once in the result.
* entries that exists during some part of the period of the
multi-request directory read appear at most once in the result.
Basically implementations scan through the directory as it exists on
disk and if there is a created entry, the client may or may not see it,
depending on where the the new entry happens to be put, with respect to
the ongoing scan. As far as deleted entries, the implementation only
has to be able to move on to the next entry if it encouneters an entry
marked as deleted.
OK, so the server has to be clever rather than telling the client to
restart the readdir -- I'm not sure this is the right trade-off since
the client has to cope with being told the cached cookie is useless (as
per Trond's input below) but I guess implementations work this way
already and it isn't my call. In that case I suggest that the last
sentence of s15.26.4, para 9, is modified to tell server implementers a
bit more clearly what they have to do. Suggestion:
OLD:
Ideally, the cookie value should not change if the directory is
modified since the client may be caching these values.
NEW:
The server SHOULD try to accept cookie values issued with READDIR
responses even if the directory has been modified between the
READDIR calls but MAY return NFS4ERR_NOT_VALID if this is not
possible as might be the case if the server has rebooted in the
interim.
One nasty thought occurs to me regarding the idea that a client caches
the cookie value(s): Is the server supposed to maintain the whole
sequence of cookies for a sequence of READDIRs on a single directory so
the client can reissue some of the READDIR calls or is it fair enough
for the server to throw them away after the client has used them once?
And how long should the server hang onto cookie state in normal operation?
s19.4.1, para 2:
> For the purposes of open delegation, READs and WRITEs done without an
> OPEN are treated as the functional equivalents of a corresponding
> type of OPEN. This refers to the READs and WRITEs that use the
> anonymous stateid. Therefore, READs or WRITEs with an anonymous
> stateid done by another client will force the server to recall a
> OPEN_DELEGATE_WRITE delegation. A WRITE with an anonymous stateid
> done by another client will force a recall of OPEN_DELEGATE_READ
> delegations.
suggest rewriting this as;
For the purposes of open delegation, READs and WRITEs done without an
OPEN (anonymous and read-bypass stateids) are treated as the functional
equivalents of a corresponding type of OPEN. READs and WRITEs done
with an
anonymous stateid done by another client will force the server to
recall a
OPEN_DELEGATE_WRITE delegation. A WRITE with an anonymous stateid
done by another client will force a recall of OPEN_DELEGATE_READ
delegations. Handling of read-bypass stateid's is identical
except that a READ
done with a read-bypass stateids will not force a recall of an
OPEN_DELEGATE_READ
delegation.
That sounds good. It might be useful to add (e.g., to the end of para 1
of s9.6.1:
"referred to as anonymous stateid and read-bypass stateid respectively."
On Mon, Dec 1, 2014 at 9:41 AM, Elwyn Davies <[email protected]
<mailto:[email protected]>> wrote:
Hi, Tom and David.
Sorry to have been dilatory in running through the v35 that Tom sent me.
This looks pretty good to me and has sorted out almost everything
that I flagged up in the review. In particular s7.8 is much improved.
The one problem that I have left is the issue of directory contents
being changed under the feet of a multi-part readdir request. The
last mail on this subject from 14 November said:
On Nov 14, 2014, at 3:05 PM, Tom Haynes
<[email protected]
<mailto:[email protected]>__> wrote:
<<snip>>
On Nov 11, 2014, at 12:48 PM, Elwyn Davies
<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>__> wrote:
s15.26.4/s15.26.5: What happens if the directory
has been modified
(entries added or deleted) between calls of
READDIR intended to
retrieve segments of the directory information?
Related to this,
presumably no ordering of entries is implied in
the returned
information - it would be desirable to state this.
This is where the cookieverf is supposed to come in.
In most implementations, the cookie needs to be
persistent, which indeed
means an ordering of the information.
AFAICS the text doesn't tie the cookieverf to the change
attribute of the
>>> directory. Presumably this is what is intended - it would certainly
mean
that changes would be picked up and READDIR would have to start from
the beginning again.
Asking an expert…
15.26.4
From Trond:
As far as I know, the cookieverf is about validating the cookies
themselves. There is no requirement in any of the descriptions in
RFC1813, RFC3530 or RFC5661 that states that the contents of the
directory need to change when the cookieverf does or vice-versa.
In theory, the server could throw out the cookies and regenerate
them
on reboot, for instance.
My view (remains) that if the cookie is not tied to the change
attribute of the directory, this makes life difficult for both the
server (what does it send if the data has been changed and how does
it manage maintaining checkpoints -- where a readdir finished --, in
particular if the checkpoint was on an entry that has been deleted),
and the client.
Thoughts?
I also found a some minor typos (mostly finger trouble in the new
bits) and there are a couple of nits outstanding (see below).
Are you intending to publish a -35 before Thursday?
Regards,
Elwyn
Nits:
=====
s2.1: nfs_lease4 definition still missing.
s8.5, last para: I am not sure that the jargon 'trunking relation'
is widely understood. [I don't think I have ever come across it.]
s19.4.1, para 2:
> For the purposes of open delegation, READs and WRITEs done
without an
> OPEN are treated as the functional equivalents of a corresponding
> type of OPEN. This refers to the READs and WRITEs that use the
> anonymous stateid. Therefore, READs or WRITEs with an anonymous
> stateid done by another client will force the server to recall a
> OPEN_DELEGATE_WRITE delegation. A WRITE with an anonymous stateid
> done by another client will force a recall of OPEN_DELEGATE_READ
> delegations.
Did you mean to take out the 'all 1's case' which was an alternative
in v33?
s9.10, para 1:
to use a stateid of all 0's or all 1's
Ought to be changed to "anonymous" and "READ bypass"
s9.11, last para; s15.18.5, 5th from last para; s15.20.4, para 1:
Reference s9.1.3 about incrementing seqid. (Three places all told.)
Editorial:
==========
s5.4, 2nd bullet labelled '1.': s/common to all object within given
file system./common to all objects within the given file system./
[Very nitty: Could use a different label type for the second set of
bullets.]
s6.2: s/RECOMMENED/RECOMMENDED/
s8.8, para 1: s/an zero-length string/a zero-length string/ [Missed
it last time].
s9: s/has a secondary purpose/have a secondary purpose/
New s9.1.3 looks good -- except for a bit of finger trouble
s9.1.3, para 4: s/cuurent/current/
s9.1.3, para 5: s/raesonably/reasonably/
s9.1.3, para 6: s/wraparoundby/wraparound by/, s/gretater/greater/
s9.1.6, para 2: s/consiting/consisting/
s9.1.7, para 1: s/Subseuent/Subsequent/
s10.3.1, first bullet: s/(such as an OPENs specifying
DENY=NONE)/(such as for [or at or on] OPENs specifying DENY=NONE)/
s12.4, 1st bullet: s/has a non-UT8 encoded/has a non-UTF8 encoded/
^^^
s15.2.5, para 2: s/in which operation that/in which operations that/
s15.11.5, para 5: s/the server may return the error
NFS4ERR_NOTSUPP./the server MAY return the error NFS4ERR_NOTSUPP./
(I think)
s15.18.6, last para: s/tfor the same client/for the same client/,
s/i size and change attribute/size and change attributes/
^^^ ^^^
s15.26.4/s15.26.5: Not convinced about discussion on directory info
changing under the feet of readdir.
s17, para 7: s/match wth the previous/match with the previous/
^^^
On 18/11/14 15:17, Tom Haynes wrote:
On Nov 18, 2014, at 1:20 AM, Elwyn Davies
<[email protected] <mailto:[email protected]>> wrote:
Hi.
Could you send me a snapshot of the updated version? I am
getting a bit lost on the results of the various changes.
Cheers,
Elwyn
Hi,
I was wondering about that. :-)
Later,
Tom
_______________________________________________
Gen-art mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/gen-art