NFS client/buffer cache deadlock

Brian Fundakowski Feldman green at freebsd.org
Wed Apr 27 09:08:58 PDT 2005


On Wed, Apr 27, 2005 at 10:17:46AM +0200, Marc Olzheim wrote:
> On Tue, Apr 26, 2005 at 03:36:02PM -0400, Brian Fundakowski Feldman wrote:
> > 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()
> > calls.
> 
> Yes, a single writev(). Just like in the kern/79207 PR.
> 
> It doesn't have to be superfast (why would I use NFS otherwise), just as
> long as it's threadsafe / atomic.

Alright, this will do synchronous, instead of short, writes (also,
of course, not deadlock the system) if you are trying to use an
excessively large buffer size.

<http://green.homeunix.org/~green/nfs_client.deadlock.patch>
<http://green.homeunix.org/~green/nfs_client.deadlock.HEAD.patch>

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


More information about the freebsd-stable mailing list