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-all mailing list