Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Jul 1995 10:52:02 +0100 (BST)
From:      Doug Rabson <dfr@render.com>
To:        John Dyson <dyson@freefall.cdrom.com>
Cc:        dillon@blob.best.net, bugs@freebsd.org
Subject:   Re: brelse() panic in nfs_read()/nfs_bioread()
Message-ID:  <Pine.BSF.3.91.950725105045.230E@minnow.render.com>
In-Reply-To: <199507250322.UAA04874@freefall.cdrom.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 24 Jul 1995, John Dyson wrote:

> > The sequence of events in nfs_bioread is more-or-less:
> > 
> > 	vfs_busy_pages(bp, 0);
> > 	<read data into buffer>
> > 	biodone(bp);		/* called from nfs_doio */
> > 	...
> > 	uiomove(...);
> > 	...
> > 	brelse(bp);
> > 
> > Is it possible that the pages can be reclaimed between the biodone(bp) 
> > and the brelse(bp).  The buffer is still busy, so another getblk will 
> > wait until the release but the pages are 'unbusied' in biodone.  If a 
> > sleep happens in uiomove as a result of a pagefault, then perhaps the VM 
> > system snatches the pages away then.
> > 
> > One could fix this by surrounding the uiomove with calls to 
> > vfs_busy_pages and vfs_unbusy_pages.  There must be a better way though.
> > 
> Doug, your were close in on the right area where there is/was a bug.
> I just submitted a fix to vfs_unbusy_pages to DG for his review/mods
> that should solve some problems.  It appears that the bogus page
> handling was faulty for the 2nd and subsequent pages in a buffer.
> This only manifests itself on read-aheads on VREG files.  It is
> most likely a major component (perhaps the only component) of the
> elusive problem that you and others have been seeing.
> 
> A person that DG has been working with fairly closely noticed that
> the situation got much better when the async daemons were turned
> off.  I had my suspicions -- and noticed that foff was not being
> incremented properly in vfs_unbusy_pages!!!
> 
> DG will probably test and commit this change soon...

This is good news; I just saw the commit mail go past.  Is it possible 
that this affects Karl Denninger's problem as well?

--
Doug Rabson, Microsoft RenderMorphics Ltd.	Mail:  dfr@render.com
						Phone: +44 171 251 4411
						FAX:   +44 171 251 0939




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.91.950725105045.230E>