Subject: Re: pool problems, TAILQ, and more...
To: Todd Whitesel , Manuel Bouyer <bouyer@antioche.lip6.fr>
From: Brian C. Grayson <bgrayson@orac.ece.utexas.edu>
List: tech-kern
Date: 03/26/2000 04:15:23
On Sun, Mar 26, 2000 at 01:30:27AM -0800, Todd Whitesel wrote:
> > >   Question #1:  Does anyone else use swap-on-file-only, and see
> > > panics under pressure?
> > 
> > I have a diskless vax which swaps on a file. Never paniced.
> 
> Same here, except that it has panic'd due to stuff other than file swapping.

  I've got a little more info on my panics.  It looks like
something is modifying the region after the pool_put.

  For example, after the put, but before returning from
pool_put(), the item at 0xc06ab080 has distinct prev and next
pointers.  At the next pool_get() call, at the time of entry, the
prev pointer for that item points to _itself_.  Since it was on
the free list, no one should have been modifying it between the
put and get, of course.  Thus, in TAILQ_REMOVE(), when it
updates the prev pointer, it's twiddling itself, and not the
head.  So since the head still points at it, the next call to
TAILQ_REMOVE() returns the same region.

  Is there any difference between swapping to an FFS file versus
an NFS file, as far as the functions called in uvm_swap, etc?

  I'll keep digging...

  Brian