Skip site navigation (1)Skip section navigation (2)
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>