[AFS3-std] Re: [OpenAFS-devel] convergence of RxOSD, Extended Call Backs, Byte Range Locking, etc.

Jeffrey Hutzelman jhutz@cmu.edu
Thu, 23 Jul 2009 14:48:39 -0400


--On Thursday, July 23, 2009 01:57:42 PM -0400 "Matt W. Benjamin" 
<matt@linuxbox.com> wrote:

> Hi Jeff,
>
> 1. The DV concept carries the assertion that any representation of a
> (range of a) file at a DV is equivalent to any other representation.

I'm not sure what you mean here.  A FID+DV names a string of bits, period.

> We've discussed related concepts, in the context of async delivery of
> extended callbacks, a number of times before.  I think that it is
> relevant to both discussions that, even two clients simultaneously
> mutating a file (one or both has not yet stored), states of the
> distributed system (set of all views of the file) that violates the
> assertion.

Not as seen at the protocol layer.  Anyone who fetches data for a given 
range and gets the same DV, also gets the same data.  Further, at present, 
any sequence of stores on a given file can be (is) serialized, and each 
intermediate state has a unique DV, different from both the initial state 
and any final state.  It is likely that, with the cooperation of the 
storing client, this requirement could be relaxed such that intermediate 
states need not have unique DV's if the surrounding stores are done by the 
same client and the intermediate state is not seen by any other client.

You state that clients may have local mutations which have not been written 
to the fileserver and which they label with a DV that may mean something 
else to another client, or even to the fileserver.  This may be the case, 
but it is an implementation matter, and on the wire, that DV can only ever 
mean one thing, which is the meaning assigned to it be the fileserver.



>  I think it is critical to think through the implications of
> this.  I think that asserting that single store operations be synchronous
> across the distributed views if the caches do not take reservations, as I
> believe they do in DFS, is not a useful consistency guarantee.  And, I
> think it's the case that in the common case for DFS, the reservation is
> probably useless, because it's not coordinated with the applications
> doing the I/Os.

I'm not sure why you keep talking about DFS.  We're not talking about DFS; 
we're talking about AFS.  In AFS, it must not be the case that if we both 
start with DV n and I start writing, that you can do a read partway through 
my write and get something you think is DV n+1, and then my write completes 
and the result is also DV n+1.  It also must not be the case that if you 
start a read of DV n before my write starts, you get (or already have) some 
data which is part of DV n, and then get some of the data that I wrote and 
think it is also part of DV n.

> 2. I do not follow your distinction between data and metadata, with
> respect to what clients now do and what xcb clients are specified to do
> on receipt of a StoreData extended callback notification (data changed in
> a range).  Could you please clarify?

A fileserver can tell a client that something about FID 1.2.3 has changed, 
and the client has to do a new FetchStatus to find out that the DV is no 
longer 5 and instead has changed to 6.  With XCB, the fileserver can even 
tell the client in the callback that the DV has changed to 6, and it can 
potentially even give the cache manager information about which ranges are 
different between DV 5 and 6.  What it cannot do is tell the cache manager 
that the first 512 bytes of FID 1.2.3 DV 5 have changed and are now 
something else.

-- Jeff