Module Name: src
Committed By: mrg
Date: Mon May 2 07:29:19 UTC 2011
Modified Files:
src/sys/dev/raidframe: rf_raid1.c rf_reconbuffer.c rf_reconstruct.c
rf_reconstruct.h rf_reconutil.c
Log Message:
convert rb_mutex to a kmutex/cv.
To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/dev/raidframe/rf_raid1.c
cvs rdiff -u -r1.24 -r1.25 src/sys/dev/raidframe/rf_reconbuffer.c
cvs rdiff -u -r1.111 -r1.112 src/sys/dev/raidframe/rf_reconstruct.c
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/raidframe/rf_reconstruct.h
cvs rdiff -u -r1.32 -r1.33 src/sys/dev/raidframe/rf_reconutil.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/raidframe/rf_raid1.c
diff -u src/sys/dev/raidframe/rf_raid1.c:1.33 src/sys/dev/raidframe/rf_raid1.c:1.34
--- src/sys/dev/raidframe/rf_raid1.c:1.33 Sun May 1 01:09:05 2011
+++ src/sys/dev/raidframe/rf_raid1.c Mon May 2 07:29:18 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_raid1.c,v 1.33 2011/05/01 01:09:05 mrg Exp $ */
+/* $NetBSD: rf_raid1.c,v 1.34 2011/05/02 07:29:18 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -33,7 +33,7 @@
*****************************************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.33 2011/05/01 01:09:05 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.34 2011/05/02 07:29:18 mrg Exp $");
#include "rf_raid.h"
#include "rf_raid1.h"
@@ -581,12 +581,12 @@
}
RF_LOCK_PSS_MUTEX(raidPtr, rbuf->parityStripeID);
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
while(reconCtrlPtr->rb_lock) {
- ltsleep(&reconCtrlPtr->rb_lock, PRIBIO, "reconctlcnmhs", 0, &reconCtrlPtr->rb_mutex);
+ rf_wait_cond2(reconCtrlPtr->rb_cv, reconCtrlPtr->rb_mutex);
}
reconCtrlPtr->rb_lock = 1;
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
pssPtr = rf_LookupRUStatus(raidPtr, reconCtrlPtr->pssTable,
rbuf->parityStripeID, rbuf->which_ru, RF_PSS_NONE, NULL);
@@ -688,10 +688,10 @@
out:
RF_UNLOCK_PSS_MUTEX(raidPtr, rbuf->parityStripeID);
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
reconCtrlPtr->rb_lock = 0;
- wakeup(&reconCtrlPtr->rb_lock);
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_broadcast_cond2(reconCtrlPtr->rb_cv);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
#if RF_DEBUG_RECON
if (rf_reconbufferDebug) {
printf("raid%d: RAID1 rbuf submission: returning %d\n",
Index: src/sys/dev/raidframe/rf_reconbuffer.c
diff -u src/sys/dev/raidframe/rf_reconbuffer.c:1.24 src/sys/dev/raidframe/rf_reconbuffer.c:1.25
--- src/sys/dev/raidframe/rf_reconbuffer.c:1.24 Sun Mar 4 06:02:39 2007
+++ src/sys/dev/raidframe/rf_reconbuffer.c Mon May 2 07:29:18 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_reconbuffer.c,v 1.24 2007/03/04 06:02:39 christos Exp $ */
+/* $NetBSD: rf_reconbuffer.c,v 1.25 2011/05/02 07:29:18 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -33,7 +33,7 @@
***************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_reconbuffer.c,v 1.24 2007/03/04 06:02:39 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_reconbuffer.c,v 1.25 2011/05/02 07:29:18 mrg Exp $");
#include "rf_raid.h"
#include "rf_reconbuffer.h"
@@ -140,12 +140,12 @@
RF_LOCK_PSS_MUTEX(raidPtr, rbuf->parityStripeID);
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
while(reconCtrlPtr->rb_lock) {
- ltsleep(&reconCtrlPtr->rb_lock, PRIBIO, "reconctlcnmhs", 0, &reconCtrlPtr->rb_mutex);
+ rf_wait_cond2(reconCtrlPtr->rb_cv, reconCtrlPtr->rb_mutex);
}
reconCtrlPtr->rb_lock = 1;
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
pssPtr = rf_LookupRUStatus(raidPtr, reconCtrlPtr->pssTable, rbuf->parityStripeID, rbuf->which_ru, RF_PSS_NONE, NULL);
RF_ASSERT(pssPtr); /* if it didn't exist, we wouldn't have gotten
@@ -193,10 +193,10 @@
}
if (keep_it) {
RF_UNLOCK_PSS_MUTEX(raidPtr, rbuf->parityStripeID);
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
reconCtrlPtr->rb_lock = 0;
- wakeup(&reconCtrlPtr->rb_lock);
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_broadcast_cond2(reconCtrlPtr->rb_cv);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
rf_FreeReconBuffer(rbuf);
return (retcode);
}
@@ -286,10 +286,10 @@
out:
RF_UNLOCK_PSS_MUTEX(raidPtr, rbuf->parityStripeID);
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
reconCtrlPtr->rb_lock = 0;
- wakeup(&reconCtrlPtr->rb_lock);
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_broadcast_cond2(reconCtrlPtr->rb_cv);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
return (retcode);
}
/* pssPtr - the pss descriptor for this parity stripe */
@@ -339,21 +339,21 @@
{
RF_ReconBuffer_t *p;
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
while(reconCtrlPtr->rb_lock) {
- ltsleep(&reconCtrlPtr->rb_lock, PRIBIO, "reconctlcnmhs", 0, &reconCtrlPtr->rb_mutex);
+ rf_wait_cond2(reconCtrlPtr->rb_cv, reconCtrlPtr->rb_mutex);
}
reconCtrlPtr->rb_lock = 1;
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
if ((p = reconCtrlPtr->fullBufferList) != NULL) {
reconCtrlPtr->fullBufferList = p->next;
p->next = NULL;
}
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
reconCtrlPtr->rb_lock = 0;
- wakeup(&reconCtrlPtr->rb_lock);
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_broadcast_cond2(reconCtrlPtr->rb_cv);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
return (p);
}
Index: src/sys/dev/raidframe/rf_reconstruct.c
diff -u src/sys/dev/raidframe/rf_reconstruct.c:1.111 src/sys/dev/raidframe/rf_reconstruct.c:1.112
--- src/sys/dev/raidframe/rf_reconstruct.c:1.111 Sat Feb 19 07:11:09 2011
+++ src/sys/dev/raidframe/rf_reconstruct.c Mon May 2 07:29:18 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_reconstruct.c,v 1.111 2011/02/19 07:11:09 enami Exp $ */
+/* $NetBSD: rf_reconstruct.c,v 1.112 2011/05/02 07:29:18 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -33,7 +33,7 @@
************************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.111 2011/02/19 07:11:09 enami Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.112 2011/05/02 07:29:18 mrg Exp $");
#include <sys/param.h>
#include <sys/time.h>
@@ -952,26 +952,26 @@
rbuf->failedDiskSectorOffset, rbuf->failedDiskSectorOffset + sectorsPerRU - 1);
rf_RemoveFromActiveReconTable(raidPtr, rbuf->parityStripeID, rbuf->which_ru);
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
raidPtr->reconControl->pending_writes--;
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
if (rbuf->type == RF_RBUF_TYPE_FLOATING) {
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
while(raidPtr->reconControl->rb_lock) {
- ltsleep(&raidPtr->reconControl->rb_lock, PRIBIO, "reconctrlpre1", 0,
- &raidPtr->reconControl->rb_mutex);
+ rf_wait_cond2(raidPtr->reconControl->rb_cv,
+ raidPtr->reconControl->rb_mutex);
}
raidPtr->reconControl->rb_lock = 1;
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
raidPtr->numFullReconBuffers--;
rf_ReleaseFloatingReconBuffer(raidPtr, rbuf);
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
raidPtr->reconControl->rb_lock = 0;
- wakeup(&raidPtr->reconControl->rb_lock);
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_broadcast_cond2(raidPtr->reconControl->rb_cv);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
} else
if (rbuf->type == RF_RBUF_TYPE_FORCED)
rf_FreeReconBuffer(rbuf);
@@ -1056,9 +1056,9 @@
/* This is an error, but it was a pending write.
Account for it. */
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
raidPtr->reconControl->pending_writes--;
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
rbuf = (RF_ReconBuffer_t *) event->arg;
@@ -1442,9 +1442,9 @@
(void *) raidPtr, 0, NULL, PR_WAITOK);
rbuf->arg = (void *) req;
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
raidPtr->reconControl->pending_writes++;
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
rf_DiskIOEnqueue(&raidPtr->Queues[rbuf->spCol], req, RF_IO_RECON_PRIORITY);
return (0);
@@ -1531,12 +1531,12 @@
* of a minimum */
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
while(reconCtrlPtr->rb_lock) {
- ltsleep(&reconCtrlPtr->rb_lock, PRIBIO, "reconctlcnmhs", 0, &reconCtrlPtr->rb_mutex);
+ rf_wait_cond2(reconCtrlPtr->rb_cv, reconCtrlPtr->rb_mutex);
}
reconCtrlPtr->rb_lock = 1;
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
new_min = ~(1L << (8 * sizeof(long) - 1)); /* 0x7FFF....FFF */
for (i = 0; i < raidPtr->numCol; i++)
@@ -1559,10 +1559,10 @@
}
}
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
reconCtrlPtr->rb_lock = 0;
- wakeup(&reconCtrlPtr->rb_lock);
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_broadcast_cond2(reconCtrlPtr->rb_cv);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
}
/*
@@ -1594,12 +1594,12 @@
* separation before we'll wake up.
*
*/
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
while(reconCtrlPtr->rb_lock) {
- ltsleep(&reconCtrlPtr->rb_lock, PRIBIO, "reconctlchs", 0, &reconCtrlPtr->rb_mutex);
+ rf_wait_cond2(reconCtrlPtr->rb_cv, reconCtrlPtr->rb_mutex);
}
reconCtrlPtr->rb_lock = 1;
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
if ((raidPtr->headSepLimit >= 0) &&
((ctrl->headSepCounter - reconCtrlPtr->minHeadSepCounter) > raidPtr->headSepLimit)) {
Dprintf5("raid%d: RECON: head sep stall: col %d hsCtr %ld minHSCtr %ld limit %ld\n",
@@ -1632,10 +1632,10 @@
ctrl->reconCtrl->reconDesc->hsStallCount++;
#endif /* RF_RECON_STATS > 0 */
}
- RF_LOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_lock_mutex2(reconCtrlPtr->rb_mutex);
reconCtrlPtr->rb_lock = 0;
- wakeup(&reconCtrlPtr->rb_lock);
- RF_UNLOCK_MUTEX(reconCtrlPtr->rb_mutex);
+ rf_broadcast_cond2(reconCtrlPtr->rb_cv);
+ rf_unlock_mutex2(reconCtrlPtr->rb_mutex);
return (retval);
}
@@ -1878,14 +1878,14 @@
{
RF_CallbackDesc_t *p;
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
while(raidPtr->reconControl->rb_lock) {
- ltsleep(&raidPtr->reconControl->rb_lock, PRIBIO,
- "rf_wakeuphscbw", 0, &raidPtr->reconControl->rb_mutex);
+ rf_wait_cond2(raidPtr->reconControl->rb_cv,
+ raidPtr->reconControl->rb_mutex);
}
raidPtr->reconControl->rb_lock = 1;
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
while (raidPtr->reconControl->headSepCBList) {
p = raidPtr->reconControl->headSepCBList;
@@ -1894,10 +1894,10 @@
rf_CauseReconEvent(raidPtr, p->col, NULL, RF_REVENT_HEADSEPCLEAR);
rf_FreeCallbackDesc(p);
}
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
raidPtr->reconControl->rb_lock = 0;
- wakeup(&raidPtr->reconControl->rb_lock);
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_broadcast_cond2(raidPtr->reconControl->rb_cv);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
}
Index: src/sys/dev/raidframe/rf_reconstruct.h
diff -u src/sys/dev/raidframe/rf_reconstruct.h:1.27 src/sys/dev/raidframe/rf_reconstruct.h:1.28
--- src/sys/dev/raidframe/rf_reconstruct.h:1.27 Mon May 2 01:07:24 2011
+++ src/sys/dev/raidframe/rf_reconstruct.h Mon May 2 07:29:18 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_reconstruct.h,v 1.27 2011/05/02 01:07:24 mrg Exp $ */
+/* $NetBSD: rf_reconstruct.h,v 1.28 2011/05/02 07:29:18 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -142,8 +142,8 @@
int eq_count; /* debug only */
/* reconstruction buffer management */
- RF_DECLARE_MUTEX(rb_mutex) /* mutex for messing around
- * with recon buffers */
+ rf_declare_mutex2(rb_mutex); /* mutex/cv for messing */
+ rf_declare_cond2(rb_cv); /* around with recon buffers */
int rb_lock; /* 1 if someone is mucking
with recon buffers,
0 otherwise */
Index: src/sys/dev/raidframe/rf_reconutil.c
diff -u src/sys/dev/raidframe/rf_reconutil.c:1.32 src/sys/dev/raidframe/rf_reconutil.c:1.33
--- src/sys/dev/raidframe/rf_reconutil.c:1.32 Mon May 2 01:07:24 2011
+++ src/sys/dev/raidframe/rf_reconutil.c Mon May 2 07:29:18 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_reconutil.c,v 1.32 2011/05/02 01:07:24 mrg Exp $ */
+/* $NetBSD: rf_reconutil.c,v 1.33 2011/05/02 07:29:18 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -31,7 +31,7 @@
********************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_reconutil.c,v 1.32 2011/05/02 01:07:24 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_reconutil.c,v 1.33 2011/05/02 07:29:18 mrg Exp $");
#include <dev/raidframe/raidframevar.h>
@@ -132,7 +132,8 @@
reconCtrlPtr->eq_count = 0;
/* make the floating recon buffers and append them to the free list */
- rf_mutex_init(&reconCtrlPtr->rb_mutex);
+ rf_init_mutex2(reconCtrlPtr->rb_mutex, IPL_VM);
+ rf_init_cond2(reconCtrlPtr->rb_cv, "rfrcw");
reconCtrlPtr->fullBufferList = NULL;
reconCtrlPtr->floatingRbufs = NULL;
@@ -175,6 +176,9 @@
rf_destroy_mutex2(reconCtrlPtr->eq_mutex);
rf_destroy_cond2(reconCtrlPtr->eq_cv);
+ rf_destroy_mutex2(reconCtrlPtr->rb_mutex);
+ rf_destroy_cond2(reconCtrlPtr->rb_cv);
+
rf_FreeReconMap(reconCtrlPtr->reconMap);
rf_FreeParityStripeStatusTable(raidPtr, reconCtrlPtr->pssTable);
RF_Free(reconCtrlPtr->perDiskInfo,
@@ -266,7 +270,7 @@
int i, j, sum = 0;
if (dolock)
- RF_LOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_lock_mutex2(raidPtr->reconControl->rb_mutex);
pssTable = raidPtr->reconControl->pssTable;
for (i = 0; i < raidPtr->pssTableSize; i++) {
@@ -308,7 +312,7 @@
RF_ASSERT(sum == raidPtr->numFloatingReconBufs);
if (dolock)
- RF_UNLOCK_MUTEX(raidPtr->reconControl->rb_mutex);
+ rf_unlock_mutex2(raidPtr->reconControl->rb_mutex);
}
#endif