Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 04 Jun 1997 09:04:16 -0700
From:      John Polstra <jdp@polstra.com>
To:        Doug Rabson <dfr@nlsystems.com>
Cc:        freebsd-bugs@hub.freebsd.org
Subject:   Re: kern/3771 NFS hangs when writing to local FS re-mounted via NFS 
Message-ID:  <199706041604.JAA09579@austin.polstra.com>
In-Reply-To: Your message of "Wed, 04 Jun 1997 16:57:19 BST." <Pine.BSF.3.95q.970604165410.394F-100000@herring.nlsystems.com> 
References:  <Pine.BSF.3.95q.970604165410.394F-100000@herring.nlsystems.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> The deadly embrace is in NFS.  The sequence of events is something like
> this:
> 
> 	NFS client allocates a buffer and fills it with data
> 	NFS client does a write rpc and locks the socket to read the reply
> 	NFS server gets the write rpc and starts to process it
> 	NFS server allocates a buffer to write the data
> 	VFS runs out of clean buffers and picks a dirty one
> 		(B_NEEDCOMMIT|B_DELWRI)
> 	VFS calls NFS client to clean the buffer
> 	NFS client tries to do a commit rpc but hangs because the socket
> 	is locked

That sounds like a different problem than the one that hits CVSup,
then.  CVSup just opens up two SOCK_STREAM connections between
client and server, and does a bunch of non-blocking reads and
writes.  Because of the way the application is structured, it's
easily proved that there's no inherent deadlock.  (It's a linear
pipeline of 5 threads connected by 4 unidirectional channels.)  It
hangs when localhost is used, but not when other transports are used.
--
   John Polstra                                       jdp@polstra.com
   John D. Polstra & Co., Inc.                Seattle, Washington USA
   "Self-knowledge is always bad news."                 -- John Barth



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706041604.JAA09579>