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
John Baldwin
jhb at freebsd.org
Thu Jul 26 18:38:21 UTC 2007
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
More information about the cvs-src
mailing list