Subject: Re: Limited success booting an A3020
To: Ben Harris <bjh21@netbsd.org>
From: Gavan Fantom <gavan@coolfactor.org>
List: port-arm26
Date: 12/03/2001 19:51:41
On Mon, 3 Dec 2001, Ben Harris wrote:
> Hmm. Does readdir work in general?
Yes. readdir is called a number of times by things earlier in the boot
process, and ls / works, but ls /dev fails.
ls /dev ends up waiting on "getnewbuf", if that helps.
If I let it get to a login prompt and enter root, "login" hangs, in the
middle of a readdir, again on "getnewbuf".
In all of these occasions, nfs_readdir is called, which calls nfs_bioread,
which does not return.
The call within nfs_bioread:
rabp = nfs_getcacheblk(vp, nndp->dc_blkno,
NFS_DIRBLKSIZ, p);
does not return, and the path within this to getnewbuf is fairly
straightforward.
In all other readdir operations, the test surrounding the line above
fails, nfs_getcacheblk is not called with those arguments, and the machine
doesn't hang.
/*
* If not eof and read aheads are enabled, start one.
* (You need the current block first, so that you have the
* directory offset cookie of the next block.)
*/
if (nfs_numasync > 0 && nmp->nm_readahead > 0 &&
np->n_direofoffset == 0 && !(np->n_flag &
NQNFSNONCACHE)) {
So maybe a problem with read-aheads?
Are we truly out of buffers, or is there something more subtle going on
here?
--
Gillette - the best a man can forget