Date: Thu, 26 Jul 2007 14:18:58 -0400 From: John Baldwin <jhb@freebsd.org> To: Pawel Jakub Dawidek <pjd@freebsd.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/fs/devfs devfs_vnops.c src/sys/fs/fifofs fifo_vnops.c src/sys/kern uipc_usrreq.c vfs_vnops.c src/sys/vm vnode_pager.c Message-ID: <200707261418.59436.jhb@freebsd.org> In-Reply-To: <200707261658.l6QGwAs8038591@repoman.freebsd.org> References: <200707261658.l6QGwAs8038591@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 26 July 2007 12:58:10 pm Pawel Jakub Dawidek wrote: > pjd 2007-07-26 16:58:09 UTC > > FreeBSD src repository > > Modified files: > sys/fs/devfs devfs_vnops.c > sys/fs/fifofs fifo_vnops.c > sys/kern uipc_usrreq.c vfs_vnops.c > sys/vm vnode_pager.c > Log: > When we do open, we should lock the vnode exclusively. This fixes few races: > - fifo race, where two threads assign v_fifoinfo, > - v_writecount modifications, > - v_object modifications, > - and probably more... Is it possible this could fix some 'vrele: negative ref cnt' and 'vput: negative ref cnt' panics I am seeing on 6.x? e.g.: panic: vput: negative ref cnt cpuid = 3 KDB: stack backtrace: kdb_backtrace() at kdb_backtrace+0x37 panic() at panic+0x1d3 vput() at vput+0xd1 vn_close() at vn_close+0x7d vn_closefile() at vn_closefile+0x10a fdrop_locked() at fdrop_locked+0x10d fdrop() at fdrop and: panic: vrele: negative ref cnt cpuid = 3 KDB: stack backtrace: kdb_backtrace() at kdb_backtrace+0x37 panic() at panic+0x1d1 vrele() at vrele+0xe1 vm_object_vndeallocate() at vm_object_vndeallocate+0x68 vm_object_deallocate() at vm_object_deallocate+0xe9 vm_map_entry_delete() at vm_map_entry_delete+0x17e vm_map_delete() at vm_map_delete+0x20e vmspace_exit() at vmspace_exit+0xe1 exit1() at exit1+0x67a sys_exit() at sys_exit+0xe syscall() at syscall+0x404 -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707261418.59436.jhb>