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