From owner-freebsd-stable Sat Dec 1 15:54:38 2001 Delivered-To: freebsd-stable@freebsd.org Received: from services.webwarrior.net (overlord-host99.dsl.visi.com [209.98.86.99]) by hub.freebsd.org (Postfix) with ESMTP id 66E0337B417 for ; Sat, 1 Dec 2001 15:54:35 -0800 (PST) Received: from twincat.vladsempire.net (unknown [209.105.45.85]) by services.webwarrior.net (Postfix) with ESMTP id 829C331C for ; Sat, 1 Dec 2001 17:54:20 -0600 (CST) Received: by twincat.vladsempire.net (Postfix, from userid 1001) id 72EC0385F; Sat, 1 Dec 2001 17:54:29 +0000 (GMT) Date: Sat, 1 Dec 2001 17:54:29 +0000 From: Josh Paetzel To: Christopher Farley Cc: freebsd-stable@FreeBSD.ORG Subject: Re: VXLOCK interlock avoided Message-ID: <20011201175429.C493@twincat.vladsempire.net> Mail-Followup-To: Christopher Farley , freebsd-stable@FreeBSD.ORG References: <20011201155117.A61451@northernbrewer.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20011201155117.A61451@northernbrewer.com>; from chris@northernbrewer.com on Sat, Dec 01, 2001 at 03:51:21PM -0600 Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Sat, Dec 01, 2001 at 03:51:21PM -0600, Christopher Farley wrote: > I got a couple of weird messages the other day that I've never seen > before: > > VXLOCK interlock avoided > VXLOCK interlock avoided in vn_lock > > What are these? > > -- > Christopher Farley > www.northernbrewer.com Well, I'm no kernel hacker, but I know (or at least think I know) what these are about. What's happening is a vnode is being cleaned so that it can be reused. While this is happening another process tries to use it and sends the first error. The second error is sent because the process that grabbed the vnode is the same process that is releasing it. /* * If the vnode is in the process of being cleaned out for * another use, we wait for the cleaning to finish and then * return failure. Cleaning is determined by checking that * the VXLOCK flag is set. */ if ((flags & LK_INTERLOCK) == 0) mtx_lock(&vp->v_interlock); if (vp->v_flag & VXLOCK) { if (vp->v_vxproc == curproc) { printf("VXLOCK interlock avoided\n"); } else { vp->v_flag |= VXWANT; msleep((caddr_t)vp, &vp->v_interlock, PINOD | PDROP, "vget", 0); return (ENOENT); } } Josh To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message