[AFS3-std] AFSVol tag-length-value extensions draft
Tom Keiser
tkeiser@sinenomine.net
Thu, 19 Nov 2009 10:38:16 -0500
Greetings,
I have submitted an I-D covering extensions to the AFSVol Rx service
which provide get, set, and enumerate services for tag-length-value
(TLV) tuples. For those of you who were in Edinburgh, or have read
the meeting minutes, I need to point out a few deviations from the
design discussion:
1) it is now tag-length-value instead of tag-uint64. Further discussion and
reflection revealed that uint64 would become a bottleneck in the near term.
Our proposed design skirts around the XDR discriminated union problem by
specifying that all future allocations of type identifiers (union
discriminator)
automatically map onto an XDR opaque via the 'default' leg of the
union. Thus,
the RPC will have a chance to be serviced, and demarshalling problems can
be handled by the RPC itself (by return of specific error codes),
rather than by
Rx failing to demarshall the entire call argument blob.
2) A number of existing fields from structures such as volintXInfo and
transDebugInfo are now exported as TLV tuples, thus eliminating the
race conditions between the new TLV RPCs, AFSVolListOneVolume, and
AFSVolMonitor.
3) In addition to the single-volume get RPC, there is also a multi-volume
split-call interface. The purpose of this interface is to allow a
volser client to
get specific metadata for many volumes in a single call. In order
to circumvent
the heap space problem, we chose a split call where the stream is an
xdrrec stream of xdr-encoded TLV structures.
You may retrieve the draft from the following locations:
http://www.ietf.org/id/draft-tkeiser-afs3-volser-tlv-00.txt
http://openafs.sinenomine.net/~tkeiser/draft-tkeiser-afs3-volser-tlv-00.html
http://openafs.sinenomine.net/~tkeiser/draft-tkeiser-afs3-volser-tlv-00.xml
Regards,
-Tom