A first step to integrate AFS/OSD into OpenAFS

What AFS/OSD is and how it works is decribed in
src/rxosd/AFS_OSD_how_it_works.txt.

The main part of AFS/OSD code is now separate in the subdirectory
src/afsosd which should be cloned from github.com by
"git clone git://github.com/hwr/afsosd.git src/afsosd"

Once this is done the configure will include this direstory in the
build.

There are 3 shared libraries (in src/afsosd):

libafsosd.so.1.15 once to be loaded by fileserver, volserver,
salvager, osddbserver or pthreaded vlserver
libdafsosd.so.1.15 once to ne loaded by dafileserver, davolserver
and dasalvager
libcafsosd.so.1.15 once to be loaded by the commands "fs" and "vos"
to have additional subcommands or operands

and some binaries:

rxosd the disk server for object storage
osddbserver the database server for object storage
osd A command to talk to osddbserver and rxosd
readabyte a program called by archival OSDs to
bring files on-line in underlying HSM systems

This patchset, however, contains code in the openafs source tree.

Changes in src/vol/ihandle.h and src/vol/ihandle.c :

rxosd uses the namei-interface to store the objects on diek. In the
case of archival OSDs the underlying HSM system may not be mountable
as a normal posix filesystem, but (in case of HPSS) can only be accessed
by calls into a special shared library instead of the I/O routines
in the C-library. Therefore the struct IHandle_s has got a new element
which is an operations vector to the appropriate I/O routines. This
change is only active when the rxosd is built, for fileserver, volserver
and all other binaries IHandle_s remains as it was.

Changes in src/rx: rx.h, rx_conn.c
src/rxkad: rxkad_client.c, rxkad_common.c, rxkad_server.c
rxkad_prototypes.h

The implementation of AFS/OSD tried to follow the T10 SCSI protocol.
This means that the client gets a object handle from the fileserver
which has an encrypted part. This object handle is given by the client
to the rxosd in order to access an object. Therefore rxosd and fileserver
have to share a secret. I use as secret the rxkad session key of a
connection between fileserver and rxosd. These changes add an
encrypt/decrypt operation to struct rx_securityOps (consuming one of
the spares).

Changes in src/vol/volume.h:

in struct VolumeDiskData one of the spares has been renamed to osdPolicy.
in struct VolumeHeader and struct VolumeDiskHeader volumeMountTable has
been renamed to OsdNetadata (the volume special file where the
osd metadata for files in object storage are stored).

Changes in src/vol/vnode.h:
in struct VnodeDiskObject the field vnodeMagic has been replaced by
a union which in non-OSD-volumes contains the magic number and
in OSD-volumes the pointer into the OsdMetadata special file.

Change in src/vol/viceinode.h:
VI_MOUNTTABLE has been renamed to VI_OSDMETADATA

Change in src/vol/volinodes.h:
also here in struct afs_inode_info the entry for the volumeMountTable
has been replaced by an entry for the OsdMetaData.

Changes in src/volser/volint.xg, src/volser/volprocs.c, src/volser/vos.c,
src/libadmin/vos/afs_vosAdmin.c and src/libadmin/test/vos.c:

Rename of spare0 to osdPolicy and of spare3 to filequota and two defines.

Change in src/volser/vol_split.c:
Old ifdefs for AFS_RXOSD_SUPPORT were removed.

Changes in the subdirectory src/rxosd:
Here are now all pieces needed to build later the hooks to AFS/OSD in the
servers, commands and the cache manager.

Changes to acinclude.m4 and configure.ac:
If src/afsosd/Makefile.in is found this subdirectory is included in the
build. To make sure the binaries and the shared libraries belong together
the minor number xx od libafsosd.so.1.xx is derived from the the constant
LIBAFSOSD_VERSION in src/rxosd/afsosd.h. With any substantial change in
afsosd.h this number should be incremented to guarantee compatibility.

All these changes don't change anything in the behaviour of OpenAFS.

The next step will be to put hooks into the fileserver, volserver and
salvager to call routines from the shared libraries if those have been
loaded ...

This first step does not contain any changes to the cache manager.