[OpenAFS-devel] [grand.central.org #124130] Re-opening the
discussion (fwd)
Felix Frank
Felix.Frank@Desy.de
Tue, 10 Mar 2009 09:02:57 +0100 (CET)
On Mon, 9 Mar 2009, Jeffrey Altman wrote:
> We need a new AFSFetchStatus64 (and everything else that has a time) so
> that we can support 64-bit time values. The question is what else do we
> need to add? We can always add new RPC values when we add new
> functionality. Doing so provides a built in negotiation mechanism:
>
> * clients only ask for what they support
> * servers only send what they support
>
> The question is simply what are all of the things we know today that
> need to go into the new RPCs and writing a proposal document to be
> sent to afs3-stds so that the protocol discussion can take place.
> The protocol is not limited to OpenAFS.
I like the way this is going. I'm not quite sure whether you're saying we
need to draft an extension to the whole protocol (I think you're not).
In any case, I propose we come up with the AFSFetchStatus64 + RPCs sooner
rather than later, speaking in the interest of OSD integration.
We might even economize on design thoroughness by including sufficient spare
space in the struct, no?
I don't know whether this thread is an appropriate place to gather needed
fields. Regardless, this is what I can see so far:
struct AFSFetchStatus {
afs_uint32 InterfaceVersion;
afs_uint32 FileType;
afs_uint32 LinkCount;
afs_uint64 Length;
afs_uint64 DataVersion;
afs_uint32 Author;
afs_uint32 Owner;
afs_uint32 CallerAccess;
afs_uint32 AnonymousAccess;
afs_uint32 UnixModeBits;
afs_uint32 ParentVnode;
afs_uint32 ParentUnique;
afs_uint32 ResidencyMask; /* is this needed? cscope tells me of 3 places
changing this, but none reading it */
afs_uint64 ClientModTime;
afs_uint64 ServerModTime;
afs_uint64 LastVolChangeTime; /* I don't know what this is truly called */
afs_uint32 Group;
afs_uint32 Protocol;
afs_uint32 lockCount;
afs_uint32 errorCode;
afs_uint32 spare[39]; /* -> 64 DWORDs */
};
Should memory alignment in 64-bit environments be considered (i.e., should
uint64s appear at "even" positions in the struct)?
>> Doing this, however, we must make sure not to get an overlap in the RPC
>> numbers! When I modified the code for MR-AFS and later for OpenAFS+OSD I
>> let a gap between the last RPC-number used by OpenAFS and the first one
>> I used. This gap has shrunk to to eight (65543-65550) in the meantime.
>
> This is why we have a registration system. Developers must not select
> their own RPC values. The values must be issued by the registrars.
> OpenAFS gatekeepers cannot issue RPC assignments. Send requests for
> RPCs to registrar@grand.central.org. (and if you don't get a timely
> response, we know where they live.)
I should then try and register all of Hartmut's new RPCs with them.
Regards
Felix