From owner-freebsd-current@FreeBSD.ORG Wed Aug 10 10:18:30 2005 Return-Path: X-Original-To: freebsd-current@FreeBSD.org Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1E97816A41F; Wed, 10 Aug 2005 10:18:30 +0000 (GMT) (envelope-from ssouhlal@FreeBSD.org) Received: from efnet-math.org (efnet-math.org [69.60.109.125]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9A2F843D49; Wed, 10 Aug 2005 10:18:29 +0000 (GMT) (envelope-from ssouhlal@FreeBSD.org) Received: from [151.28.88.105] (ppp-105-88.28-151.libero.it [151.28.88.105]) (authenticated bits=0) by efnet-math.org (8.13.1/8.13.1) with ESMTP id j7AAIN17009143 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NO); Wed, 10 Aug 2005 06:18:26 -0400 In-Reply-To: <200508101002.j7AA2D0U099849@gw.catspoiler.org> References: <200508101002.j7AA2D0U099849@gw.catspoiler.org> Mime-Version: 1.0 (Apple Message framework v733) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <50B7B998-A1A3-4AF1-8BE1-DF61E0D1E950@FreeBSD.org> Content-Transfer-Encoding: 7bit From: Suleiman Souhlal Date: Wed, 10 Aug 2005 12:18:12 +0200 To: Don Lewis X-Mailer: Apple Mail (2.733) Cc: kan@FreeBSD.org, freebsd-current@FreeBSD.org, thierry@herbelot.com Subject: Re: panic: lock (sleep mutex) vnode interlock not locked X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Aug 2005 10:18:30 -0000 Hi, On Aug 10, 2005, at 12:02 PM, Don Lewis wrote: > What is preventing VI_DOOMED from being set while we're waiting for > VOP_LOCK()? Contrary to what the VOP_LOCK(9) man page says about > LK_INTERLOCK, it looks like lockmgr() drops the vnode interlock before > it attempts to grab the vnode lock. VI_DOOMED is only set by vgonel(), and it requires both the vnode and the interlock locked. void vgonel(struct vnode *vp) { struct thread *td; int oweinact; int active; CTR1(KTR_VFS, "vgonel: vp %p", vp); ASSERT_VOP_LOCKED(vp, "vgonel"); ASSERT_VI_LOCKED(vp, "vgonel"); -- Suleiman Souhlal | ssouhlal@vt.edu The FreeBSD Project | ssouhlal@FreeBSD.org