summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2004-02-23 19:05:05 +0000
committermckusick <mckusick@FreeBSD.org>2004-02-23 19:05:05 +0000
commit962d7003116aef5d0025babb6ba17d2b42bc7fd1 (patch)
tree65368d24b7faa79eb71caf9f3d2f831be0c329e7
parente9aceed4ac92f319877110271c11960d9ff312df (diff)
downloadFreeBSD-src-962d7003116aef5d0025babb6ba17d2b42bc7fd1.zip
FreeBSD-src-962d7003116aef5d0025babb6ba17d2b42bc7fd1.tar.gz
A more accurate test in the new ufs_lock than that in 1.235.
-rw-r--r--sys/ufs/ufs/ufs_vnops.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index b02b2ad..50adc58 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -1989,8 +1989,9 @@ ufs_lock(ap)
struct vnode *vp = ap->a_vp;
int flags = ap->a_flags;
- if ((VTOI(vp)->i_flags & SF_SNAPSHOT) && (flags & LK_SHARED)) {
- flags &= ~LK_SHARED;
+ if ((VTOI(vp)->i_flags & SF_SNAPSHOT) &&
+ ((flags & LK_TYPE_MASK) == LK_SHARED)) {
+ flags &= ~LK_TYPE_MASK;
flags |= LK_EXCLUSIVE;
}
#ifndef DEBUG_LOCKS
OpenPOWER on IntegriCloud