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>