Date: Sat, 1 Dec 2001 17:54:29 +0000 From: Josh Paetzel <friar_josh@webwarrior.net> To: Christopher Farley <chris@northernbrewer.com> Cc: freebsd-stable@FreeBSD.ORG Subject: Re: VXLOCK interlock avoided Message-ID: <20011201175429.C493@twincat.vladsempire.net> In-Reply-To: <20011201155117.A61451@northernbrewer.com>; from chris@northernbrewer.com on Sat, Dec 01, 2001 at 03:51:21PM -0600 References: <20011201155117.A61451@northernbrewer.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011201175429.C493>