AFSVol Tag-Length-Value Remote Procedure Call Extensions

Several weeks ago I submitted an Internet Draft (I-D) to the afs3-standardizationAFS-3 protocol working group. This draft covers a number of interesting changes to the volume server RPC interface. The key proposals made in this draft are to:

  1. Introduce a GetCapabilities RPC, similar to the ones previously defined for the file server and cache manager services,
  2. Develop a solution to the XDR discriminated union discriminator evolution problem,
  3. Introduce a suite of RPCs to manage volume metadata via Tag-Length-Value (TLV) semantics,
  4. Export existing volume and volume transaction metadata via the new TLV interface, and
  5. Export Demand Attach File Server (DAFS) state metadata via the new TLV interface.

The primary motivation for this draft is the desire to introspect DAFS state via the standard remote procedure call interface. At the moment, the vos command can only report a boolean volume state of online/offline. For DAFS deployments, this is inadequate to properly manage a file server. Existing DAFS deployments utilize the fssync-debug command to determine the exact state of a volume. We have recognized for quite some time the need for a better (remote, and administrator–rather than developer–focused) introspection mechanism. With the advent of this draft, a considerably more descriptive set of states can be reported back to the caller.

Secondarily, this draft will pave the way for future protocol changes which permit vos to set advanced forms of volume policy, such as RxOSD-specific quotas, volume ACLs, etc.

The abstract for this draft is as follows:

AFS-3 heavily leverages Remote Procedure Calls (RPCs). This proposal adds a new mechanism to better manage the addition of new, enhancement-specific RPCs through the use of both capability bits via the GetCapabilities RPC, and via standardization of backwards-compatibility behaviors for enhancement-specific RPCs. These goals are accomplished through standardization of Tag-Length-Value (TLV) get/set/enumerate RPCs with value payloads encoded using an XDR discriminated union. The XDR union decode problem is circumvented by specifying an opaque default leg. Tags are allocated for existing volume and transaction metadata, and implementation-private tags are allocated for metadata related to the OpenAFS Demand Attach File Server.

Full text is available in the following formats: TXT, HTML, and XML.

Sine Nomine welcomes discussion of and feedback on this proposed Internet Draft over the afs3-standardization mailing list.

Topics: 
Special Type: