Module Name: src
Committed By: mrg
Date: Wed May 11 05:14:07 UTC 2011
Modified Files:
src/sys/dev/raidframe: rf_paritylog.c rf_paritylog.h
rf_paritylogDiskMgr.c rf_paritylogging.c rf_threadstuff.h
Log Message:
convert regionInfo[regionID].mutex to a kmutex.
To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/dev/raidframe/rf_paritylog.c
cvs rdiff -u -r1.8 -r1.9 src/sys/dev/raidframe/rf_paritylog.h
cvs rdiff -u -r1.26 -r1.27 src/sys/dev/raidframe/rf_paritylogDiskMgr.c
cvs rdiff -u -r1.31 -r1.32 src/sys/dev/raidframe/rf_paritylogging.c \
src/sys/dev/raidframe/rf_threadstuff.h
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_paritylog.c
diff -u src/sys/dev/raidframe/rf_paritylog.c:1.16 src/sys/dev/raidframe/rf_paritylog.c:1.17
--- src/sys/dev/raidframe/rf_paritylog.c:1.16 Wed May 11 03:38:32 2011
+++ src/sys/dev/raidframe/rf_paritylog.c Wed May 11 05:14:07 2011
@@ -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 @@
*
* 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 @@
/* 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 @@
/* 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 @@
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 @@
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");
Index: src/sys/dev/raidframe/rf_paritylog.h
diff -u src/sys/dev/raidframe/rf_paritylog.h:1.8 src/sys/dev/raidframe/rf_paritylog.h:1.9
--- src/sys/dev/raidframe/rf_paritylog.h:1.8 Wed May 11 03:38:32 2011
+++ src/sys/dev/raidframe/rf_paritylog.h Wed May 11 05:14:07 2011
@@ -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_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 */
Index: src/sys/dev/raidframe/rf_paritylogDiskMgr.c
diff -u src/sys/dev/raidframe/rf_paritylogDiskMgr.c:1.26 src/sys/dev/raidframe/rf_paritylogDiskMgr.c:1.27
--- src/sys/dev/raidframe/rf_paritylogDiskMgr.c:1.26 Wed May 11 03:38:32 2011
+++ src/sys/dev/raidframe/rf_paritylogDiskMgr.c Wed May 11 05:14:07 2011
@@ -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 @@
/* 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 @@
* 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)
Index: src/sys/dev/raidframe/rf_paritylogging.c
diff -u src/sys/dev/raidframe/rf_paritylogging.c:1.31 src/sys/dev/raidframe/rf_paritylogging.c:1.32
--- src/sys/dev/raidframe/rf_paritylogging.c:1.31 Wed May 11 03:38:32 2011
+++ src/sys/dev/raidframe/rf_paritylogging.c Wed May 11 05:14:07 2011
@@ -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_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 @@
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 @@
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);
}
Index: src/sys/dev/raidframe/rf_threadstuff.h
diff -u src/sys/dev/raidframe/rf_threadstuff.h:1.31 src/sys/dev/raidframe/rf_threadstuff.h:1.32
--- src/sys/dev/raidframe/rf_threadstuff.h:1.31 Thu May 5 08:21:09 2011
+++ src/sys/dev/raidframe/rf_threadstuff.h Wed May 11 05:14:07 2011
@@ -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 @@
#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_))