arla on FreeBSD 6 or 7?

Robert Watson rwatson at FreeBSD.org
Sun Jan 20 15:44:48 CET 2008


On Sat, 19 Jan 2008, Alec Kloss wrote:

> I have, for everyone's consideration, FreeBSD ports for a recent arla 
> snapshot and OpenAFS 1.5.30.  The arla client appears to work well on 
> FreeBSD 6.3-PRERELEASE.  The The OpenAFS port does not include the client, 
> just the server and the client tools, which I tend to prefer over the arla 
> tools because they're more complete. I install most of arla into 
> /usr/local/arla, and most of OpenAFS into /usr/local, so they don't stomp 
> all over each other.  You want/need heimdal 1.0.1 and a readline.  There are 
> also FreeBSD 6.3-PRE packages for everything.
>
> http://setfilepointer.com/pub/afs/FreeBSD/
>
> /afs/setfilepointer.com/packages/afs/FreeBSD/
>
> Comments welcome.  Testers on 6.2 and 5.5 would probably be a good thing 
> too.

I ran into a few difficulties with this on 8-CURRENT (not surprisingly), in 
approximately this order:

- The Coda and Arla liblwp's have the same name but different functionality.
   I wonder if Arla's liblwp could be installed as liblwp_arla?  Uninstalling
   Coda did the trick, but it would be nice to be able to have both on the same
   machine.

- configure seemed to get fairly confused about picking the right variants of
   various VFS-related calls, such as vget(), and often enabled several
   #defines rather than just one.  For example, I found that
   HAVE_THREE_ARGUMENTS_VFS_BUSY and HAVE_FOUR_ARGUMENTS_VFS_BUSY were both
   defined.

- I ran into quite a few unprotected ifdefs, such as "#if __NetBSD_version__ >
   " which need to be in the form "#if defined (__NetBSD__) && ...".

- VFS has changed some more -- VOP_LOCK() now lacks a thread pointer,
   VOP_OPEN() accepts a file * rather than a file index as the last argument,
   so typically it's now NULL rather than -1.  And other things along these
   lines.

My autoconf/automake is fairly weak, and it's already the case that the ifdefs 
in nnpfs as getty pretty hairy in an attempt to capture all the *BSD's:

#if defined(__APPLE__)
#define nnpfs_vfs_busy(mp, flags, lock, proc) 0
#define nnpfs_vfs_unbusy(mp, proc)
#elif defined(HAVE_THREE_ARGUMENT_VFS_BUSY)
#define nnpfs_vfs_busy(mp, flags, lock, proc) vfs_busy((mp), (flags), (lock))
#define nnpfs_vfs_unbusy(mp, proc) vfs_unbusy((mp))
#elif defined(HAVE_FOUR_ARGUMENT_VFS_BUSY)
#define nnpfs_vfs_busy(mp, flags, lock, proc) vfs_busy((mp), (flags), (lock), 
(proc))
#define nnpfs_vfs_unbusy(mp, proc) vfs_unbusy((mp), (proc))
#else
#define nnpfs_vfs_busy(mp, flags, lock, proc) vfs_busy((mp), (flags))
#define nnpfs_vfs_unbusy(mp, proc) vfs_unbusy((mp))
#endif

In continue to wonder if the right answer for FreeBSD isn't just to 
unifdef/configure the kernel module and import it into CVS.  This would allow 
nnpfs to get its parts updated as FreeBSD's VFS evolves, which it will 
continue to do for the forseeable future.  To do this, we need an nnpfs that 
builds and mostly works on 8-CURRENT as a starting point.  If someone is 
willing to do this work, perhaps by simply forward-porting Arla to 8.x as it 
stands, and then working with me to unifdef it and get it commit-ready, I'd be 
happy to get it into CVS.  This does mean being careful to track changes in 
the Arla tree for nnpfs over time in order to not let the FreeBSD kernel 
module fall behind, but my impression is that the FreeBSD VFS changes more 
than Arla's nnpfs does over time...

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the Arla-drinkers mailing list