cvs commit: src/sys/sys vnode.h src/sys/kern vfs_subr.c
Jeff Roberson
jroberson at chesapeake.net
Wed Mar 23 22:59:11 PST 2005
On Thu, 24 Mar 2005, Jeff Roberson wrote:
> jeff 2005-03-24 06:08:58 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/sys vnode.h
> sys/kern vfs_subr.c
> Log:
> - If vput() is called with a shared lock it must upgrade to an exclusive
> before it can call VOP_INACTIVE(). This must use the EXCLUPGRADE path
> because we may violate some lock order with another locked vnode if
> we drop and reacquire the lock. If EXCLUPGRADE fails, we mark the
> vnode with VI_OWEINACT. This case should be very rare.
This was definitely a bug with LOOKUP_SHARED, but I don't know that it
caused anyone problems. I'm still thinking about more elegant ways of
solving this as I add more shared lock support.
> - Clear VI_OWEINACT in vinactive() and vbusy().
> - If VI_OWEINACT is set in vgone() do the VOP_INACTIVE call here as well.
>
> Sponsored by: Isilon Systems, Inc.
>
> Revision Changes Path
> 1.597 +12 -3 src/sys/kern/vfs_subr.c
> 1.294 +1 -0 src/sys/sys/vnode.h
>
More information about the cvs-src
mailing list