summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2004-08-23 02:39:45 +0000
committerkan <kan@FreeBSD.org>2004-08-23 02:39:45 +0000
commitedf5a7b07f06cf4c6a2dd2d26b861cdcb8ca510c (patch)
treee78b5a78af3cfbd41d8db462f54a825c9e448b76 /sys/kern
parent4836740e24a9c2a7f2ffb3128912df4b0023c007 (diff)
downloadFreeBSD-src-edf5a7b07f06cf4c6a2dd2d26b861cdcb8ca510c.zip
FreeBSD-src-edf5a7b07f06cf4c6a2dd2d26b861cdcb8ca510c.tar.gz
Temporarily back out r1.74 as it seems to cause a number of regressions
accordimg to numerous reports. It might get reintroduced some time later when an exact failure mode is understood better.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_lock.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c
index f1b6a42..c819ba1 100644
--- a/sys/kern/kern_lock.c
+++ b/sys/kern/kern_lock.c
@@ -335,12 +335,8 @@ debuglockmgr(lkp, flags, interlkp, td, name, file, line)
error = acquire(&lkp, extflags, LK_SHARE_NONZERO);
lkp->lk_flags &= ~LK_WANT_UPGRADE;
- if (error) {
- if ((lkp->lk_flags & ( LK_WANT_EXCL | LK_WAIT_NONZERO)) == (LK_WANT_EXCL | LK_WAIT_NONZERO))
- wakeup((void *)lkp);
- break;
- }
-
+ if (error)
+ break;
lkp->lk_flags |= LK_HAVE_EXCL;
lkp->lk_lockholder = thr;
if (lkp->lk_exclusivecount != 0)
@@ -386,20 +382,17 @@ debuglockmgr(lkp, flags, interlkp, td, name, file, line)
/*
* Try to acquire the want_exclusive flag.
*/
- error = acquire(&lkp, extflags, LK_WANT_EXCL);
+ error = acquire(&lkp, extflags, (LK_HAVE_EXCL | LK_WANT_EXCL));
if (error)
break;
lkp->lk_flags |= LK_WANT_EXCL;
/*
* Wait for shared locks and upgrades to finish.
*/
- error = acquire(&lkp, extflags, LK_HAVE_EXCL | LK_WANT_UPGRADE | LK_SHARE_NONZERO);
+ error = acquire(&lkp, extflags, LK_WANT_UPGRADE | LK_SHARE_NONZERO);
lkp->lk_flags &= ~LK_WANT_EXCL;
- if (error) {
- if (lkp->lk_flags & LK_WAIT_NONZERO)
- wakeup((void *)lkp);
+ if (error)
break;
- }
lkp->lk_flags |= LK_HAVE_EXCL;
lkp->lk_lockholder = thr;
if (lkp->lk_exclusivecount != 0)
OpenPOWER on IntegriCloud