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
Jeff Roberson
jroberson at chesapeake.net
Thu Oct 4 18:26:39 PDT 2007
On Thu, 4 Oct 2007, John Baldwin wrote:
> On Wednesday 03 October 2007 07:48:00 pm Jeff Roberson wrote:
>> On Wed, 3 Oct 2007, John Baldwin wrote:
>>
>>> jhb 2007-10-03 21:06:05 UTC
>>>
>>> FreeBSD src repository
>>>
>>> Modified files: (Branch: RELENG_6)
>>> 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:
>>> MFC: Always use an exclusive lock on the leaf vnode during an open() when
>>> shared lookups are enabled. This closes a few races including a race
> where
>>> concurrent opens of a fifo could result in different v_fifoinfo
> structures
>>> in different threads.
>>
>> Long term we should really look for a better solution to this problem.
>> There are a number of was to improve snapshots in ffs by fixing shared
>> locking.
>
> I don't disagree. The fifo case can be fixed easily enough in the fifo code
> by using fifo_mtx to protect v_fifoinfo perhaps (or doing an upgrade on the
> vnode lock?), but for the MFC I didn't want to have to fix each of the races
> with open(2). Probably better to fix it more properly in HEAD first.
Definitely someting for head. Were there any others that you ran into
besides v_fifoinfo? We should audit this more closely anyhow. I have
been reluctant to push too much shared locking into VFS because it's not
been so carefully studied.
Jeff
>
> --
> John Baldwin
>
More information about the cvs-src
mailing list