Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Jun 2003 11:31:46 +0200
From:      Stefan =?iso-8859-1?Q?E=DFer?= <se@freebsd.org>
To:        Don Lewis <truckman@freebsd.org>
Cc:        current@freebsd.org
Subject:   Re: 5.1-CURRENT hangs on disk i/o? sysctl_old_user() non-sleepable locks
Message-ID:  <20030619093146.GA1489@StefanEsser.FreeBSD.org>
In-Reply-To: <200306190341.h5J3fFM7056254@gw.catspoiler.org>
References:  <87u1an9cay.fsf@PECTOPAH.shenton.org> <200306190341.h5J3fFM7056254@gw.catspoiler.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2003-06-18 20:41 -0700, Don Lewis <truckman@freebsd.org> wrote:
> On 18 Jun, Chris Shenton wrote:
> > Don Lewis <truckman@FreeBSD.org> writes:
> > 
> >> Try the very untested patch below ...
> > 
> >> RCS file: /home/ncvs/src/sys/kern/uipc_syscalls.c,v
> >> retrieving revision 1.150
> >> Try the very untested patch below ...
> >> diff -u -r1.150 uipc_syscalls.c
> >> --- uipc_syscalls.c	12 Jun 2003 05:52:09 -0000	1.150
> >> +++ uipc_syscalls.c	18 Jun 2003 03:14:42 -0000
> >> @@ -1775,10 +1775,13 @@
> >>  	 */
> >>  	if ((error = fgetvp_read(td, uap->fd, &vp)) != 0)
> >>  		goto done;
> >> +	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
> >>  	if (vp->v_type != VREG || VOP_GETVOBJECT(vp, &obj) != 0) {
> >>  		error = EINVAL;
> >> +		VOP_UNLOCK(vp, 0, td);
> >>  		goto done;
> >>  	}
> >> +	VOP_UNLOCK(vp, 0, td);
> > 
> > Tried it, rebuilt kernel, rebooted, no affect :-(
> > 
> > You were correct about apache using it.  Doing a simple
> > 
> >   fetch http://pectopah/
> > 
> > causes the error, dropping me into ddb if panic enabled. A "tr" shows
> > the same trace as I submitted yesterday :-(
> 
> Wierd ... I just tested the patch with ftpd which also uses sendfile()
> and didn't get any complaints from DEBUG_VFS_LOCKS.

Not sure whether the following applies, but I think the patch
should be commited anyway:

In PR kern/46652 I reported, that DEBUG_VFS_LOCKS does never
check the **vpp parameters. A patch is included in the PR and
it does generate the missing tests.

I asked for feedback on the hackers mail list (IIRC), but did
not get any replies. 

Any objections against me committing the patch now ?

(A different fix is mentioned in the PR, the patch I suggested
was the minimal change to the code which made it work, the
alternative seems cleaner to me ...) Please read PR kern/46652 !


If nobody complains, I'll do the commit tomorrow.

Regards, STefan


Index: /usr/src/sys/tools/vnode_if.awk
===================================================================
RCS file: /usr/cvs/src/sys/tools/vnode_if.awk,v
retrieving revision 1.37
diff -u -u -4 -r1.37 vnode_if.awk
--- /usr/src/sys/tools/vnode_if.awk	26 Sep 2002 04:48:43 -0000	1.37
+++ /usr/src/sys/tools/vnode_if.awk	31 Dec 2002 13:37:20 -0000
@@ -64,8 +64,10 @@
 function printh(s) {print s > hfile;}
 
 function add_debug_code(name, arg, pos)
 {
+	if (arg == "vpp")
+		arg = "*vpp";
 	if (lockdata[name, arg, pos]) {
 		printh("\tASSERT_VI_UNLOCKED("arg", \""uname"\");");
 		# Add assertions for locking
 		if (lockdata[name, arg, pos] == "L")



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030619093146.GA1489>