N/A | A.P.D. Deason |
Internet-Draft | Sine Nomine |
Intended status: Informational | February 02, 2011 |
Expires: August 06, 2011 |
Adding a Flexible GetSize RPC Variant to the AFS-3 Volume Service
draft-deason-afs3-getsizev2-00
This document describes an additional RX remote procedure call that may be used to obtain the size of an AFS-3 volume dump from an AFS-3 Volume Server service with greater flexibility and granularity.
Comments regarding this draft are solicited. Please include the AFS-3 protocol standardization mailing list (afs3-standardization@openafs.org) as a recipient of any comments
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 06, 2011.
Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.
AFS-3 provides a service (the "Volume Service") [AFS3-VVL] which allows administrators to examine and manage AFS-3 volumes via several RX remote procedure calls in the AFSVol package. One of these RPCs, Dump, can be used to obtain a dump of an AFS-3 volume that can be stored on disk, usually for backup or archival purposes. Another RPC, DumpV2, was later added to allow the caller to make slight modifications to what data is contained in the dump by way of specifying certain flags in an additional argument.
Another RPC, GetSize, can be used to obtain what the size of a dump obtained with Dump would be without needing to actually retrieve the full dump. However, no analogous RPC exists to determine what the size of a volume dump obtained via DumpV2 would be if any flags were specified in the DumpV2 call.
The existing VOLSERBAD_ACCESS, VOLSERTRELE_ERROR, and ENOENT error codes are used by the new RPC defined within this document.
One new RPC is defined for the Volume Service: GetSizeV2. Additionally, a new namespace for GetSizeV2 flags is defined, and one flag in that namespace is defined.
This behaves exactly the same way as the existing GetSize RPC, except for the addition of the flags argument, which behaves similarly to the flags argument of the existing DumpV2 RPC.
GetSizeV2(IN afs_int32 fromTrans, IN afs_int32 fromDate, IN afs_int32 flags, OUT struct volintSize *size) = XXX;
The fromTrans parameter is a transaction ID as returned by the RPC TransCreate. The size calculated will be the size of an incremental dump containing volume changes made after the specified calendar time fromDate, specified as the number of seconds since the Unix Epoch. If the specified fromDate is 0, the size for a full volume dump will be reported.
The flags parameter is zero or more flags combined via a bitwise OR operation. The available flags are described below in Section 3.2. The calculated dump size will be returned in the size parameter, represented in bytes.
On success, the call returns 0. If the calling user does not have sufficient permission, VOLSERBAD_ACCESS is returned. If the specified transaction does not exist, ENOENT is returned. If there is an error releasing the volume transaction, VOLSERTRELE_ERROR is returned.
The defined flags for GetSizeV2 are analogous to the flags in DumpV2, although all future flags defined for GetSizeV2 need not have equivalents in DumpV2 and vice versa. As such, since there is only one flag currently defined for DumpV2 (VOLDUMPV2_OMITDIRS), there is only one flag defined for GetSizeV2:
Current AFS-3 implementations only allow users listed in the server's AFS-3 Basic OverSeer's UserList to issue Dump, DumpV2, and GetSize RPCs successfully. It is recommended that implementations also only allow such users to issue the GetSizeV2 RPC for consistency and to reduce potential Denial of Service attack vectors from unauthenticated clients.
Additionally, while the size of a volume is not sensitive (and may be obtained from other RPCs from an unauthenticated user, such as XListVolumes), information on when a volume's contents have changed might be considered sensitive under some circumstances. And since the GetSize and GetSizeV2 RPCs are generally only useful to members of the UserList, it makes little sense to allow any other users to call them.
This document makes no request of the IANA.
This document requires the registration of one code point for the AFSVol GetSizeV2 RPC detailed above.
This document also requests that the AFS-3 Registrar assumes control over the GetSizeV2 flags namespace. This document requires the registration of one flag in this namespace, AFSVOLGETSIZEV2_OMITDIRS, detailed above.
[AFS3-VVL] | Zayas, E.R., "AFS-3 Programmer's Reference: Volume Server/Volume Location Server Interface", Transarc Corp. Tech. Rep. FS-00-D165, August 1991. |