NFS client/buffer cache deadlock

Brian Fundakowski Feldman green at FreeBSD.ORG
Wed Apr 20 11:01:40 PDT 2005


On Wed, Apr 20, 2005 at 01:29:10PM -0400, Garrett Wollman wrote:
> <<On Wed, 20 Apr 2005 11:52:33 -0400, Brian Fundakowski Feldman <green at FreeBSD.ORG> said:
> 
> > I think the first is more useful behavior than the last.  Supporting it
> > should be exactly the same as supporting what happens if the actual
> > filesystem fills up.  In this case, the filesystem is being requested to
> > write more "than there is room for."
> 
> Returning a short write for operations on regular files would
> definitely be considered astonishing.  The changes that you have made
> should be considered flow control, not admission control, and should
> appear to the user no differently than if we were waiting for a slow
> disk to write something; i.e., the user thread should be blocked until
> either the entire write completes, or the process is interrupted by a
> signal.

So what _would_ be consistent for nfs_bio.c::nfs_write()?  IO_UNIT is
set for all write calls which means "atomic", and nfs_rslock() and
O_APPEND appear to at least attempt this.  Please take a detailed look
at the current system and the changes... it's far less clear-cut than
POLA dictates.

-- 
Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green at FreeBSD.org                               \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\


More information about the freebsd-current mailing list