[OpenAFS-port-freebsd] FreeBSD/OpenAFS working, mostly

Tom Maher tardis@watson.org
11 Jul 2002 16:47:56 -0400


Nickolai Zeldovich <kolya@MIT.EDU> writes:

> On Thu, 11 Jul 2002 13:41:38 EDT, "David E. Cross" <crossd@cs.rpi.edu> wrote:
> 
> >             What I have no clue on is code path.  After an RX packet is
> > received who gets it, the kernel?  afsd?   If someone lets me know this
> > I can begin tracing code paths and see where these chunks are going.
> 
> Seeing as how most things appear to work fine, I'd guess that Rx isn't
> at fault, so you probably don't want to trace through all of that code.
> Above Rx, you probably want to look at afs_GetDCache, which fetches the
> data from the server using Rx and stores it in a cache file.  I'm not
> really familiar with the "aforementioned cache problem" that you refer
> to, so I'm not sure what else to suggest.  Actually, you might also want
> to look at afs/FBSD/osi_file.c, which contains functions used by the
> "portable" parts of the cache manager to access the disk cache.

I've been flailing around in src/afs/afs_dcache.c for a few weeks now.
Something seems to be randomly changing the alen & aoffset out from
under me, causing it to just give up after the first chunk.  I'm not
entirely sure why, and I've been trying to track it down.

See
http://www.ece.cmu.edu/~tardis/openafs/oafs-fbsd-2002-07-05.patch
and
http://www.ece.cmu.edu/~tardis/openafs/oafs-fbsd-syslog-2002-07-05

The part we care about, I think, is in afs_GetDCache(), in the if clause
starting with

    /* 
     * We must read in the whole chunk if the version number doesn't 
     * match. 
     */ 
    if (aflags & 2) { 

-- 
Tom Maher