summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2007-12-28 00:38:13 +0000
committerattilio <attilio@FreeBSD.org>2007-12-28 00:38:13 +0000
commitc720b77ca941958916f2c143cba3327d448ee08b (patch)
tree6756c34c743d4bdd03e9bd87a198472dd71631fe
parent15ff96944169ae56c4a2f3da912dc720eca4996c (diff)
downloadFreeBSD-src-c720b77ca941958916f2c143cba3327d448ee08b.zip
FreeBSD-src-c720b77ca941958916f2c143cba3327d448ee08b.tar.gz
Trimm out now unused option LK_EXCLUPGRADE from the lockmgr namespace.
This option just adds complexity and the new implementation no longer will support it, so axing it now that it is unused is probabilly the better idea. FreeBSD version is bumped in order to reflect the KPI breakage introduced by this patch. In the ports tree, kris found that only old OSKit code uses it, but as it is thought to work only on 2.x kernels serie, version bumping will solve any problem.
-rw-r--r--share/man/man9/VOP_LOCK.98
-rw-r--r--share/man/man9/lock.912
-rw-r--r--sys/fs/unionfs/union_vnops.c1
-rw-r--r--sys/kern/kern_lock.c13
-rw-r--r--sys/sys/lockmgr.h7
-rw-r--r--sys/sys/param.h2
6 files changed, 6 insertions, 37 deletions
diff --git a/share/man/man9/VOP_LOCK.9 b/share/man/man9/VOP_LOCK.9
index c519e46..36fbe4e 100644
--- a/share/man/man9/VOP_LOCK.9
+++ b/share/man/man9/VOP_LOCK.9
@@ -61,15 +61,13 @@ The vnode being locked or unlocked.
.It Fa flags
One of the lock request types:
.Pp
-.Bl -tag -width ".Dv LK_EXCLUPGRADE" -offset indent -compact
+.Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
.It Dv LK_SHARED
Shared lock.
.It Dv LK_EXCLUSIVE
Exclusive lock.
.It Dv LK_UPGRADE
Shared-to-exclusive upgrade.
-.It Dv LK_EXCLUPGRADE
-First shared-to-exclusive upgrade.
.It Dv LK_DOWNGRADE
Exclusive-to-shared downgrade.
.It Dv LK_RELEASE
@@ -82,7 +80,7 @@ The lock type may be
.Em or Ns 'ed
with these lock flags:
.Pp
-.Bl -tag -width ".Dv LK_EXCLUPGRADE" -offset indent -compact
+.Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
.It Dv LK_NOWAIT
Do not sleep to wait for lock.
.It Dv LK_SLEEPFAIL
@@ -95,7 +93,7 @@ The lock type may be
.Em or Ns 'ed
with these control flags:
.Pp
-.Bl -tag -width ".Dv LK_EXCLUPGRADE" -offset indent -compact
+.Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
.It Dv LK_INTERLOCK
Specify when the caller already has a simple lock
.Fn ( VOP_LOCK
diff --git a/share/man/man9/lock.9 b/share/man/man9/lock.9
index 5968745..ee73335 100644
--- a/share/man/man9/lock.9
+++ b/share/man/man9/lock.9
@@ -26,7 +26,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 20, 2006
+.Dd December 27, 2007
.Dt LOCK 9
.Os
.Sh NAME
@@ -113,7 +113,7 @@ Its arguments are:
A pointer to the lock to manipulate.
.It Fa flags
Flags indicating what action is to be taken.
-.Bl -tag -width ".Dv LK_EXCLUPGRADE"
+.Bl -tag -width ".Dv LK_CANRECURSE"
.It Dv LK_SHARED
Acquire a shared lock.
If an exclusive lock is currently held, it will be downgraded.
@@ -127,14 +127,6 @@ is not set, the system will
Downgrade exclusive lock to a shared lock.
Downgrading a shared lock is not permitted.
If an exclusive lock has been recursed, all references will be downgraded.
-.It Dv LK_EXCLUPGRADE
-Upgrade a shared lock to an exclusive lock.
-Fails with
-.Er EBUSY
-if there is someone ahead of you in line waiting for an upgrade.
-If this call fails, the shared lock is lost.
-Attempts to upgrade an exclusive lock will cause a
-.Xr panic 9 .
.It Dv LK_UPGRADE
Upgrade a shared lock to an exclusive lock.
If this call fails, the shared lock is lost.
diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c
index 7a0cb60..74c90b1 100644
--- a/sys/fs/unionfs/union_vnops.c
+++ b/sys/fs/unionfs/union_vnops.c
@@ -81,7 +81,6 @@ static struct lk_lr_table un_llt[] = {
{LK_SHARED, LK_RELEASE},
{LK_EXCLUSIVE, LK_RELEASE},
{LK_UPGRADE, LK_DOWNGRADE},
- {LK_EXCLUPGRADE, LK_DOWNGRADE},
{LK_DOWNGRADE, LK_UPGRADE},
{0, 0}
};
diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c
index d4413de..8d1a219 100644
--- a/sys/kern/kern_lock.c
+++ b/sys/kern/kern_lock.c
@@ -299,19 +299,6 @@ _lockmgr(struct lock *lkp, u_int flags, struct mtx *interlkp,
wakeup((void *)lkp);
break;
- case LK_EXCLUPGRADE:
- /*
- * If another process is ahead of us to get an upgrade,
- * then we want to fail rather than have an intervening
- * exclusive access.
- */
- if (lkp->lk_flags & LK_WANT_UPGRADE) {
- shareunlock(td, lkp, 1);
- error = EBUSY;
- break;
- }
- /* FALLTHROUGH normal upgrade */
-
case LK_UPGRADE:
/*
* Upgrade a shared lock to an exclusive one. If another
diff --git a/sys/sys/lockmgr.h b/sys/sys/lockmgr.h
index 9765c36..6fe9e63 100644
--- a/sys/sys/lockmgr.h
+++ b/sys/sys/lockmgr.h
@@ -84,12 +84,6 @@ struct lock {
* have upgraded to an exclusive lock. Other processes may get
* exclusive access to the resource between the time that the upgrade
* is requested and the time that it is granted.
- * LK_EXCLUPGRADE - the process must hold a shared lock that it wants to
- * have upgraded to an exclusive lock. If the request succeeds, no
- * other processes will have gotten exclusive access to the resource
- * between the time that the upgrade is requested and the time that
- * it is granted. However, if another process has already requested
- * an upgrade, the request will fail (see error returns below).
* LK_DOWNGRADE - the process must hold an exclusive lock that it wants
* to have downgraded to a shared lock. If the process holds multiple
* (recursive) exclusive locks, they will all be downgraded to shared
@@ -107,7 +101,6 @@ struct lock {
#define LK_SHARED 0x00000001 /* shared lock */
#define LK_EXCLUSIVE 0x00000002 /* exclusive lock */
#define LK_UPGRADE 0x00000003 /* shared-to-exclusive upgrade */
-#define LK_EXCLUPGRADE 0x00000004 /* first shared-to-exclusive upgrade */
#define LK_DOWNGRADE 0x00000005 /* exclusive-to-shared downgrade */
#define LK_RELEASE 0x00000006 /* release any type of lock */
#define LK_DRAIN 0x00000007 /* wait for all lock activity to end */
diff --git a/sys/sys/param.h b/sys/sys/param.h
index 1e46beb..67b0e74 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -57,7 +57,7 @@
* is created, otherwise 1.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 800007 /* Master, propagated to newvers */
+#define __FreeBSD_version 800008 /* Master, propagated to newvers */
#ifndef LOCORE
#include <sys/types.h>
OpenPOWER on IntegriCloud