summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
diff options
context:
space:
mode:
authormrg <mrg@NetBSD.org>2011-05-11 05:14:07 +0000
committermrg <mrg@NetBSD.org>2011-05-11 05:14:07 +0000
commit9046703fdcf9ea0f3c0403a5f305091108434f87 (patch)
tree2b14a6806cbbcd77a8fbe1c893f610ab83756b20 /sys/dev/raidframe
parent56e2bbfb90c6492a6a284cd51cada6e93341c62b (diff)
convert regionInfo[regionID].mutex to a kmutex.
Diffstat (limited to 'sys/dev/raidframe')
-rw-r--r--sys/dev/raidframe/rf_paritylog.c18
-rw-r--r--sys/dev/raidframe/rf_paritylog.h6
-rw-r--r--sys/dev/raidframe/rf_paritylogDiskMgr.c12
-rw-r--r--sys/dev/raidframe/rf_paritylogging.c9
-rw-r--r--sys/dev/raidframe/rf_threadstuff.h4
5 files changed, 26 insertions, 23 deletions
diff --git a/sys/dev/raidframe/rf_paritylog.c b/sys/dev/raidframe/rf_paritylog.c
index f1c64aa8a84..1503d9b83b3 100644
--- a/sys/dev/raidframe/rf_paritylog.c
+++ b/sys/dev/raidframe/rf_paritylog.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_paritylog.c,v 1.16 2011/05/11 03:38:32 mrg Exp $ */
+/* $NetBSD: rf_paritylog.c,v 1.17 2011/05/11 05:14:07 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_paritylog.c,v 1.16 2011/05/11 03:38:32 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_paritylog.c,v 1.17 2011/05/11 05:14:07 mrg Exp $");
#include "rf_archs.h"
@@ -605,6 +605,8 @@ DumpParityLogToDisk(
*
* NON-BLOCKING */
+ RF_ASSERT(rf_owned_mutex2(raidPtr->regionInfo[regionID].mutex));
+
if (rf_parityLogDebug)
printf("[dumping parity log to disk, region %d]\n", regionID);
log = raidPtr->regionInfo[regionID].coreLog;
@@ -689,7 +691,7 @@ rf_ParityLogAppend(
/* lock the region for the first item in logData */
RF_ASSERT(logData != NULL);
regionID = logData->regionID;
- RF_LOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex);
RF_ASSERT(raidPtr->regionInfo[regionID].loggingEnabled);
if (clearReintFlag) {
@@ -719,9 +721,9 @@ rf_ParityLogAppend(
/* see if we moved to a new region */
if (regionID != item->regionID) {
- RF_UNLOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex);
regionID = item->regionID;
- RF_LOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex);
RF_ASSERT(raidPtr->regionInfo[regionID].loggingEnabled);
}
punt = RF_FALSE;/* Set to RF_TRUE if work is blocked. This
@@ -845,7 +847,7 @@ rf_ParityLogAppend(
FreeParityLogData(item);
}
}
- RF_UNLOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex);
if (rf_parityLogDebug)
printf("[exiting ParityLogAppend]\n");
return (0);
@@ -858,9 +860,9 @@ rf_EnableParityLogging(RF_Raid_t * raidPtr)
int regionID;
for (regionID = 0; regionID < rf_numParityRegions; regionID++) {
- RF_LOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex);
raidPtr->regionInfo[regionID].loggingEnabled = RF_TRUE;
- RF_UNLOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex);
}
if (rf_parityLogDebug)
printf("[parity logging enabled]\n");
diff --git a/sys/dev/raidframe/rf_paritylog.h b/sys/dev/raidframe/rf_paritylog.h
index ac7977657db..e986c81d604 100644
--- a/sys/dev/raidframe/rf_paritylog.h
+++ b/sys/dev/raidframe/rf_paritylog.h
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_paritylog.h,v 1.8 2011/05/11 03:38:32 mrg Exp $ */
+/* $NetBSD: rf_paritylog.h,v 1.9 2011/05/11 05:14:07 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -144,8 +144,8 @@ struct RF_DiskMap_s {
};
struct RF_RegionInfo_s {
- RF_DECLARE_MUTEX(mutex) /* protects: diskCount, diskMap,
- * loggingEnabled, coreLog */
+ rf_declare_mutex2(mutex); /* protects: diskCount, diskMap,
+ * loggingEnabled, coreLog */
rf_declare_mutex2(reintMutex); /* protects: reintInProgress */
int reintInProgress;/* flag used to suspend flushing operations */
RF_SectorCount_t capacity; /* capacity of this region in sectors */
diff --git a/sys/dev/raidframe/rf_paritylogDiskMgr.c b/sys/dev/raidframe/rf_paritylogDiskMgr.c
index 87ef2eb71f7..28ee32549e9 100644
--- a/sys/dev/raidframe/rf_paritylogDiskMgr.c
+++ b/sys/dev/raidframe/rf_paritylogDiskMgr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_paritylogDiskMgr.c,v 1.26 2011/05/11 03:38:32 mrg Exp $ */
+/* $NetBSD: rf_paritylogDiskMgr.c,v 1.27 2011/05/11 05:14:07 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_paritylogDiskMgr.c,v 1.26 2011/05/11 03:38:32 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_paritylogDiskMgr.c,v 1.27 2011/05/11 05:14:07 mrg Exp $");
#include "rf_archs.h"
@@ -534,13 +534,13 @@ ReintegrateLogs(
/* Enable flushing for this region. Holding both
* locks provides a synchronization barrier with
* DumpParityLogToDisk */
- RF_LOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex);
rf_lock_mutex2(raidPtr->regionInfo[regionID].reintMutex);
/* XXXmrg: don't need this? */
rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex);
raidPtr->regionInfo[regionID].diskCount = 0;
raidPtr->regionInfo[regionID].reintInProgress = RF_FALSE;
- RF_UNLOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex);
rf_unlock_mutex2(raidPtr->regionInfo[regionID].reintMutex); /* flushing is now
* enabled */
/* XXXmrg: don't need this? */
@@ -573,13 +573,13 @@ rf_ShutdownLogging(RF_Raid_t * raidPtr)
* regions. */
if (rf_forceParityLogReint) {
for (regionID = 0; regionID < rf_numParityRegions; regionID++) {
- RF_LOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex);
raidPtr->regionInfo[regionID].loggingEnabled =
RF_FALSE;
log = raidPtr->regionInfo[regionID].coreLog;
raidPtr->regionInfo[regionID].coreLog = NULL;
diskCount = raidPtr->regionInfo[regionID].diskCount;
- RF_UNLOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
+ rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex);
if (diskCount > 0 || log != NULL)
ReintegrateRegion(raidPtr, regionID, log);
if (log != NULL)
diff --git a/sys/dev/raidframe/rf_paritylogging.c b/sys/dev/raidframe/rf_paritylogging.c
index f0227b171eb..f5df1cb48ac 100644
--- a/sys/dev/raidframe/rf_paritylogging.c
+++ b/sys/dev/raidframe/rf_paritylogging.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_paritylogging.c,v 1.31 2011/05/11 03:38:32 mrg Exp $ */
+/* $NetBSD: rf_paritylogging.c,v 1.32 2011/05/11 05:14:07 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_paritylogging.c,v 1.31 2011/05/11 03:38:32 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_paritylogging.c,v 1.32 2011/05/11 05:14:07 mrg Exp $");
#include "rf_archs.h"
@@ -410,7 +410,7 @@ rf_ConfigureParityLogging(
rf_ShutdownParityLoggingDiskQueue,
raidPtr);
for (i = 0; i < rf_numParityRegions; i++) {
- rf_mutex_init(&raidPtr->regionInfo[i].mutex);
+ rf_init_mutex2(raidPtr->regionInfo[i].mutex, IPL_VM);
rf_init_mutex2(raidPtr->regionInfo[i].reintMutex, IPL_VM);
raidPtr->regionInfo[i].reintInProgress = RF_FALSE;
raidPtr->regionInfo[i].regionStartAddr =
@@ -500,7 +500,6 @@ FreeRegionInfo(
RF_Raid_t * raidPtr,
RF_RegionId_t regionID)
{
- RF_LOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
RF_Free(raidPtr->regionInfo[regionID].diskMap,
(raidPtr->regionInfo[regionID].capacity *
sizeof(RF_DiskMap_t)));
@@ -512,8 +511,8 @@ FreeRegionInfo(
RF_ASSERT(raidPtr->regionInfo[regionID].coreLog == NULL);
RF_ASSERT(raidPtr->regionInfo[regionID].diskCount == 0);
}
- RF_UNLOCK_MUTEX(raidPtr->regionInfo[regionID].mutex);
rf_destroy_mutex2(raidPtr->regionInfo[regionID].reintMutex);
+ rf_destroy_mutex2(raidPtr->regionInfo[regionID].mutex);
}
diff --git a/sys/dev/raidframe/rf_threadstuff.h b/sys/dev/raidframe/rf_threadstuff.h
index 58ff83c9a75..0eb96ad2faf 100644
--- a/sys/dev/raidframe/rf_threadstuff.h
+++ b/sys/dev/raidframe/rf_threadstuff.h
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_threadstuff.h,v 1.31 2011/05/05 08:21:09 mrg Exp $ */
+/* $NetBSD: rf_threadstuff.h,v 1.32 2011/05/11 05:14:07 mrg Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -83,6 +83,8 @@ typedef void *RF_ThreadArg_t;
#define rf_init_mutex2(_m_, _p_) mutex_init(&(_m_), MUTEX_DEFAULT, (_p_))
#define rf_destroy_mutex2(_m_) mutex_destroy(&(_m_))
+#define rf_owned_mutex2(_m_) mutex_owned(&(_m_))
+
#define rf_init_cond2(_c_, _w_) cv_init(&(_c_), (_w_))
#define rf_destroy_cond2(_c_) cv_destroy(&(_c_))