NFS client/buffer cache deadlock

Brian Fundakowski Feldman green at
Tue Apr 26 12:36:03 PDT 2005

On Tue, Apr 26, 2005 at 06:43:46PM +0200, Marc Olzheim wrote:
> [changed cc: from standards@ back to stable@ again.]
> On Tue, Apr 26, 2005 at 12:25:49PM -0400, Brian Fundakowski Feldman wrote:
> > You can assure that this happens in only two ways:
> > 
> > 1. Make a complete copy of the data.  This is what currently occurs:
> >    it gets stuffed into the buffer cache as the write happens.
> > 2. Keep the data around synchronously -- by virtue of the write system
> >    call being used synchronously, the thread's VM context is around,
> >    and duplication need not occur.
> It seems as though FreeBSD 4.x either used 2) or does something wrong
> indeed. Why would 2) be a problem on FreeBSD 5.x ? Can't the pages
> written from be locked during the write, instead of copied internally ?

I'm still guessing that for whatever reason your writes on the FreeBSD
4.x NFS client are not using NFSv3/transactions.  The second method
I just now implemented; it works fine except for being slower since
all data is acknowledged synchronously.  Are you using one writev()
instead of many writes so you can atomically write a large sparse data
structure?  If so, you will probably just have to cope with the lower
performance than for reasonably-sized writes.  If not: why are you
trying to write it atomically?  Just use multiple normal-sized write()

> Btw. running the writev program with 20 * 100 MB on UFS on a 512MB
> FreeBSD 6-CURRENT system practicly locks the filesystem down _and_
> causes all processes to be swapped out in favor of the buffer cache.
> 'top' however, doesnt' show a rise in BUF usage.
> On FreeBSD 4.x, the system performance as usual during the writev to
> UFS.

That's certainly not very optimal.  I don't know anything about it, sorry.

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

More information about the freebsd-stable mailing list