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

Hartmut Reuter reuter@rzg.mpg.de
Mon, 27 Jul 2009 17:19:14 +0200


Jeffrey Altman wrote:
> Hartmut:
> 
> You are welcome for the advise.  I would be happy to provide much more
> of it once I am able to read a protocol specification.
> 
> Thank you.
> 
> Jeffrey Altman
> 
> 

The (future) protocol for the traffic between CM, fileserver and CM, osd
is rather simple:

1. case fetch data

if Protocol in AFSFetchStatus had the bit RX_OSD (0x2) on then

CM does to the fileserver:

RXAFS_StartAsyncFetch(rx_connection *conn, AFSFid *Fid, afs_uint64
offset, afs_uint64 length, afsUUID uuid, afs_uint32 protocol = 2,
afs_uint64 *transid, struct async *info, AFSFetchStatus *OutStatus,
AFSCallBack *Callback)

where info contains a union for different protocols. In case or RX_OSD
it contains atruct osd_fileList list.

If the return code is 0 osd_fileList contains a single struct osd_file
which in turn is the description of the file which typically consists in
a single segment. The segment contains one or more (up to 8) objects
(depending on striping or mirroring). For each object the CM may create
a RXOSD_read RPC to the osd specified in the description of the object.

CM to osd:

StartRXOSD_read(rx_call *call, t10rock *rock, afs_uint64 part_id,
afs_uint64 obj_id, afs_uint64 offset, afs_uint64 length)

rock, part_id, and obj_id are taken from the object description in
osd_file. The call was opened on a connection to the ip-address taken
form the description of the object. rock contains encrypted data which
the osd can decrypt with the session key used on the connection from the
fileserver to the osd. rock tells the osd what this CM is allowed to do
with the object ...

Then the CM unmarshels the afs_uint64 length field which he rx_Read from
the osd and subsequently reads data into the cache with rx_Read().
At the end as usual EndRXOSD_read and rx_EndCall.

Now CM notifies the fileserver about the end of the transaction:

RXAFS_EndAsyncFetch(rx_connection *conn, AFSFid *fid, afs_uint64 transid);

Jeffrey:
Is that the kind of specification you are looking for? Or what else?

Hartmut
-----------------------------------------------------------------
Hartmut Reuter                  e-mail 		reuter@rzg.mpg.de
			   	phone 		 +49-89-3299-1328
			   	fax   		 +49-89-3299-1301
RZG (Rechenzentrum Garching)   	web    http://www.rzg.mpg.de/~hwr
Computing Center of the Max-Planck-Gesellschaft (MPG) and the
Institut fuer Plasmaphysik (IPP)
-----------------------------------------------------------------