On 2003-06-18 20:41 -0700, Don Lewis <[EMAIL PROTECTED]> wrote:
> On 18 Jun, Chris Shenton wrote:
> > Don Lewis <[EMAIL PROTECTED]> 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")
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to