From owner-freebsd-hackers Tue Jun 15 10:33:12 1999 Delivered-To: freebsd-hackers@freebsd.org Received: from feral.com (feral.com [192.67.166.1]) by hub.freebsd.org (Postfix) with ESMTP id 3B2F714C18; Tue, 15 Jun 1999 10:33:09 -0700 (PDT) (envelope-from mjacob@feral.com) Received: from semuta.feral.com (semuta [192.67.166.70]) by feral.com (8.8.7/8.8.7) with ESMTP id KAA19382; Tue, 15 Jun 1999 10:33:11 -0700 Date: Tue, 15 Jun 1999 10:33:00 -0700 (PDT) From: Matthew Jacob Reply-To: mjacob@feral.com To: Matthew Dillon Cc: freebsd-hackers@FreeBSD.ORG, peter@FreeBSD.ORG Subject: Re: D'oh! In-Reply-To: <199906151729.KAA19516@apollo.backplane.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > : > > The problem is that peter is not releasing the nfs_node_hash_lock > when he goes to retry, creating a deadlock with himself. > > Peter, looks like a quick fix & commit to me, I'd say just go ahead > and do it. > > Heh, I just realized how funny that first statement was :-) Yup, that's my take too.... waking up any waiters to re-contend seemed correct to do too.... Index: nfs_node.c =================================================================== RCS file: /home/ncvs/src/sys/nfs/nfs_node.c,v retrieving revision 1.29 diff -c -r1.29 nfs_node.c *** nfs_node.c 1999/06/05 05:26:36 1.29 --- nfs_node.c 1999/06/15 17:19:49 *************** *** 167,172 **** --- 167,175 ---- bcmp((caddr_t)fhp, (caddr_t)np2->n_fhp, fhsize)) continue; vrele(vp); + if (nfs_node_hash_lock < 0) + wakeup(&nfs_node_hash_lock); + nfs_node_hash_lock = 0; goto retry; } LIST_INSERT_HEAD(nhpp, np, n_hash); If peter doesn't respond by this afternoon, I'll commit it. I've tried it on -current so far. -matt To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message