[AFS3-std] fileserver to fileserver RPCs

Derrick Brashear shadow@gmail.com
Tue, 11 May 2010 09:45:14 -0400


As part of the work done by Vishal Powar, my Google Summer of Code
student two years ago, we have the start of readwrite replication in
RT (http://rt.central.org/rt/Ticket/Display.html?id=114116)

It necessarily adds a server to server RPC protocol, which is below.
However, it is effectively the needed subset of RPCs to create data,
and the client ViceId of the caller.

I intend to offer a standards proposal for this, instead using the
signatures of the proposed "RPC refresh" RPCs, again with the client
ViceIds added, with the idea that an additional Rx "service" is run on
each fileserver to accept these.

Would this be a reasonable proposal?

Derrick

RCreateFile(
  IN  AFSFid *DirFid,
  string Name<AFSNAMEMAX>,
  AFSStoreStatus *InStatus,
  AFSFid *InFid,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65600;

RRemoveFile(
  IN  AFSFid *DirFid,
  string Name<AFSNAMEMAX>,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65601;

RStoreData64(
  IN  AFSFid *Fid,
  AFSStoreStatus *InStatus,
  afs_uint64 Pos,
  afs_uint64 Length,
  afs_uint64 FileLength,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65602;

RRename(
  IN  AFSFid *OldDirFid,
  string OldName<AFSNAMEMAX>,
  AFSFid *NewDirFid,
  string NewName<AFSNAMEMAX>,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65603;

RRemoveDir(
  IN  AFSFid *DirFid,
  string Name<AFSNAMEMAX>,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65604;

RMakeDir(
  IN  AFSFid *DirFid,
  string Name<AFSNAMEMAX>,
  AFSStoreStatus *InStatus,
  AFSFid *InFid,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65605;

RSymlink(
  IN  AFSFid *DirFid,
  string Name<AFSNAMEMAX>,
  string LinkContents<AFSPATHMAX>,
  AFSStoreStatus *InStatus,
  AFSFid *InFid,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65606;

RLink(
  IN  AFSFid *DirFid,
  string Name<AFSNAMEMAX>,
  AFSFid *ExistingFid,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65607;

RStoreACL(
  IN  AFSFid *Fid,
  AFSOpaque *AccessList,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65608;

RStoreStatus(
  IN  AFSFid *Fid,
  AFSStoreStatus *InStatus,
  AFSVolSync *Sync,
  afs_int32 clientViceId
) = 65609;