arla-0.90 on NetBSD 3.x, small syntax fix and what will need to be done

Tomas Olsson tol at stacken.kth.se
Thu Jan 11 20:05:47 CET 2007


"Jonathan A. Kollasch" <jakllsch at kollasch.net> writes:
> there is a missing ")" before the ";".
> 
Thanks, fixed.

> After fixing that, it will successfully build on NetBSD 3.0.1, but the modload
> finds undefined symbols, nnpfs_dev_msleep, nnpfs_getpages, nnpfs_putpages.
> 
> I tried implementing these, and succeeded in getting everything going,
> but the data of files in AFS was totally corrupt, so I'm betting I did
> something wrong. :]
> 
The main problem (which keeps Open and FreeBSD from working as well) has to
do with how nnpfs opens the cache files containing block data.  In the
olden days, we'd get the vnode when arlad notified nnpfs of the data's
existence, using arlad's context. The vnode could then be used during the
users's syscalls -- very handy.

Now we felt that given the potentially very large number of blocks known to
nnpfs, we shouldn't hold on to vnodes for all of them. Which means we need
to look up and open the block vnode from the user thread on demand.  For
some reason one can still use arlad's context to begin the lookup from the
cache dir (where arlad is chrooted) on MacOS without running into the
locking issues all the other BSD's have.  Most often one could just use the
first block of each file as we used the cache file before, but for
subsequent blocks it gets more complicated.  Perhaps we could open the
vnode for the dir where all blocks are found whenever a file is opened, and
then keep it for doing block lookup/open for subsequent accesses to that
file.

Anyway, one needs to do some major surgery before the block cache can work
on NetBSD etc.  Feel free to try (I don't think it's undoable) or just
discuss it with us. It's appreciated. 

> however, for the (get|put)pages, I basically modified what
> 
We've used genfs_{get,put}pages for a while, any chance that will still do?

thanks
        /t


More information about the Arla-drinkers mailing list