Respect any passed in external lockmgr flags such as LK_NOWAIT in the
default implementations of VOP_LOCK() and VOP_UNLOCK(). Tested by: jlemon, phk Glanced at by: jeffr
This commit is contained in:
parent
ea6ff0649f
commit
9722121a3c
@ -445,8 +445,7 @@ vop_sharedlock(ap)
|
|||||||
default:
|
default:
|
||||||
panic("vop_sharedlock: bad operation %d", flags & LK_TYPE_MASK);
|
panic("vop_sharedlock: bad operation %d", flags & LK_TYPE_MASK);
|
||||||
}
|
}
|
||||||
if (flags & LK_INTERLOCK)
|
vnflags |= flags & (LK_INTERLOCK | LK_EXTFLG_MASK);
|
||||||
vnflags |= LK_INTERLOCK;
|
|
||||||
#ifndef DEBUG_LOCKS
|
#ifndef DEBUG_LOCKS
|
||||||
return (lockmgr(vp->v_vnlock, vnflags, VI_MTX(vp), ap->a_td));
|
return (lockmgr(vp->v_vnlock, vnflags, VI_MTX(vp), ap->a_td));
|
||||||
#else
|
#else
|
||||||
@ -503,8 +502,7 @@ vop_nolock(ap)
|
|||||||
default:
|
default:
|
||||||
panic("vop_nolock: bad operation %d", flags & LK_TYPE_MASK);
|
panic("vop_nolock: bad operation %d", flags & LK_TYPE_MASK);
|
||||||
}
|
}
|
||||||
if (flags & LK_INTERLOCK)
|
vnflags |= flags & (LK_INTERLOCK | LK_EXTFLG_MASK);
|
||||||
vnflags |= LK_INTERLOCK;
|
|
||||||
return(lockmgr(vp->v_vnlock, vnflags, VI_MTX(vp), ap->a_td));
|
return(lockmgr(vp->v_vnlock, vnflags, VI_MTX(vp), ap->a_td));
|
||||||
#else /* for now */
|
#else /* for now */
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user