[OpenAFS] library implementing the server side of the afs protocol?

Jeffrey Hutzelman jhutz@cmu.edu
Tue, 15 Mar 2005 19:01:59 -0500


On Monday, March 14, 2005 04:50:55 PM -0600 Nathan Neulinger 
<nneul@umr.edu> wrote:

> 1. You'd be more properly looking for 'libviced' not 'libafsd', as afsd
> is the client not the server.
>
> 2. There is a tool that re-exports a local filesystem as read-only AFS
> data that was not maintained, but I cannot remember the name of it. One
> of the people on the list may remember though. It was significantly
> smaller than the existing fileserver implementation and would be a
> likely starting point for what you're looking to do.
>
> -- Nathan
>
> On Sun, 2005-03-13 at 19:50 -0800, Adam Megacz wrote:
>> Hey, aside from openafs/transarc's afsd, and possibly arla, are there
>> any implementations of the server side of the afs protocol?
>>
>> Basically I'm looking for some sort of "libafsd" that will let me
>> write programs that appear to be an afs server, but actually aren't.
>> For example, dynamically generated content, or an {nfs/smb}-to-afs
>> translator (the inverse of the current afs-to-{afp,nfs} translators).
>>
>> In the early days, HTTP was supposed to be a protocol for retrieving
>> static files.  Then along came CGI, and we had dynamic content.  I'm
>> sort of looking for the answer to "CGI is to HTTP as _____ is to AFS".


The RXAFS protocol is actually pretty simple, if you scale back on a few 
things.  You basically compile the protocol description (.xg file), do a 
little bit of setup to get Rx up and running, and provide functions to 
implement each of the RPC's.  The RPC operations are very high-level, like 
"FetchData", "FetchStatus", and "FetchACL".


The software Nathan is thinking of in 'hostafs', which really never got 
beyond the proof-of-concept stage.  It was intended to eventually provide 
full read/write access to a local filesystem via AFS, to replace a sort of 
semi-anonymous authenticated rcp we had here a number of years ago. 
Because the model is for each workstation to operate as a pseudo-cell, 
hostafs implements a subset of the VL protocol in addition to the RXAFS 
protocol.
Look in /afs/cs.cmu.edu/project/systems-jhutz/hostafs


I also have a considerably more trivial server "tafssrv", which takes a 
configuration file defining the set of volumes and their contents, in terms 
of files and directory trees in the local filesystem.  It scans the 
configuration file only at startup, and gives out very short callbacks. 
Because tafssrv is designed to be able to operate standalone or as part of 
a larger cell, it implements a subset of the VL protocol in addition to the 
RXAFS protocol.  It also implements some parts of the AFSVol protocol, so 
you can do things like get volume dumps of the volumes it exports.
Look in /afs/cs.cmu.edu/project/systems-jhutz/tafssrv


-- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
   Sr. Research Systems Programmer
   School of Computer Science - Research Computing Facility
   Carnegie Mellon University - Pittsburgh, PA