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
 

Reply via email to