From owner-cvs-all Tue Sep 29 16:15:35 1998 Return-Path: Received: (from daemon@localhost) by hub.freebsd.org (8.8.8/8.8.8) id QAA03464 for cvs-all-outgoing; Tue, 29 Sep 1998 16:15:35 -0700 (PDT) (envelope-from owner-cvs-all) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id QAA03452; Tue, 29 Sep 1998 16:15:30 -0700 (PDT) (envelope-from mckusick@FreeBSD.org) From: Kirk McKusick Received: (from mckusick@localhost) by freefall.freebsd.org (8.8.8/8.8.5) id QAA29074; Tue, 29 Sep 1998 16:15:25 -0700 (PDT) Date: Tue, 29 Sep 1998 16:15:25 -0700 (PDT) Message-Id: <199809292315.QAA29074@freefall.freebsd.org> To: cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: cvs commit: src/sys/nfs nfs_node.c Sender: owner-cvs-all@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk mckusick 1998/09/29 16:15:25 PDT Modified files: sys/nfs nfs_node.c Log: Do not need (or want) to take a reference on an NFS file that is being deleted due to an forcible unmount. The problem is that vgone calls vclean() which then calls calls nfs_inactive() with VXLOCK set on the vnode. Nfs_inactive() was calling vget() to get a reference on the vnode, which in turn hung on VXLOCK. Nfs_inactive() now checks v_usecount to make sure that the vnode is not coming from vclean() before it does a vget(). Revision Changes Path 1.28 +12 -6 src/sys/nfs/nfs_node.c