mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-17 22:04:40 +00:00
Apply the same patch as r196205 for nfs_upgrade_lock() and
nfs_downgrade_lock() to the experimental nfs client. Approved by: re (kensmith), kib (mentor)
This commit is contained in:
parent
326841e4d0
commit
60f04e38ca
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=196332
|
@ -129,28 +129,25 @@ int
|
|||
ncl_upgrade_vnlock(struct vnode *vp)
|
||||
{
|
||||
int old_lock;
|
||||
|
||||
if ((old_lock = VOP_ISLOCKED(vp)) != LK_EXCLUSIVE) {
|
||||
if (old_lock == LK_SHARED) {
|
||||
/* Upgrade to exclusive lock, this might block */
|
||||
vn_lock(vp, LK_UPGRADE | LK_RETRY);
|
||||
} else {
|
||||
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
|
||||
}
|
||||
|
||||
ASSERT_VOP_LOCKED(vp, "ncl_upgrade_vnlock");
|
||||
old_lock = VOP_ISLOCKED(vp);
|
||||
if (old_lock != LK_EXCLUSIVE) {
|
||||
KASSERT(old_lock == LK_SHARED,
|
||||
("ncl_upgrade_vnlock: wrong old_lock %d", old_lock));
|
||||
/* Upgrade to exclusive lock, this might block */
|
||||
vn_lock(vp, LK_UPGRADE | LK_RETRY);
|
||||
}
|
||||
return old_lock;
|
||||
return (old_lock);
|
||||
}
|
||||
|
||||
void
|
||||
ncl_downgrade_vnlock(struct vnode *vp, int old_lock)
|
||||
{
|
||||
if (old_lock != LK_EXCLUSIVE) {
|
||||
if (old_lock == LK_SHARED) {
|
||||
/* Downgrade from exclusive lock, this might block */
|
||||
vn_lock(vp, LK_DOWNGRADE);
|
||||
} else {
|
||||
VOP_UNLOCK(vp, 0);
|
||||
}
|
||||
KASSERT(old_lock == LK_SHARED, ("wrong old_lock %d", old_lock));
|
||||
/* Downgrade from exclusive lock. */
|
||||
vn_lock(vp, LK_DOWNGRADE | LK_RETRY);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue