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