On 2003-06-18 20:41 -0700, Don Lewis <truckman_at_freebsd.org> wrote: > On 18 Jun, Chris Shenton wrote: > > Don Lewis <truckman_at_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 > >> _at__at_ -1775,10 +1775,13 _at__at_ > >> */ > >> 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 _at__at_ -64,8 +64,10 _at__at_ 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")Received on Thu Jun 19 2003 - 00:31:53 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:12 UTC