diff options
Diffstat (limited to 'sys/dev/raidframe')
| -rw-r--r-- | sys/dev/raidframe/rf_parityscan.c | 12 | ||||
| -rw-r--r-- | sys/dev/raidframe/rf_raid1.c | 8 |
2 files changed, 16 insertions, 4 deletions
diff --git a/sys/dev/raidframe/rf_parityscan.c b/sys/dev/raidframe/rf_parityscan.c index 557b945e7d7..71c90e7061c 100644 --- a/sys/dev/raidframe/rf_parityscan.c +++ b/sys/dev/raidframe/rf_parityscan.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_parityscan.c,v 1.24 2004/03/01 23:30:59 oster Exp $ */ +/* $NetBSD: rf_parityscan.c,v 1.25 2004/03/02 15:47:35 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ ****************************************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_parityscan.c,v 1.24 2004/03/01 23:30:59 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_parityscan.c,v 1.25 2004/03/02 15:47:35 oster Exp $"); #include <dev/raidframe/raidframevar.h> @@ -249,8 +249,12 @@ rf_VerifyParityBasic(RF_Raid_t *raidPtr, RF_RaidAddr_t raidAddr, #endif RF_LOCK_MUTEX(mcpair->mutex); mcpair->flag = 0; + RF_UNLOCK_MUTEX(mcpair->mutex); + rf_DispatchDAG(rd_dag_h, (void (*) (void *)) rf_MCPairWakeupFunc, (void *) mcpair); + + RF_LOCK_MUTEX(mcpair->mutex); while (!mcpair->flag) RF_WAIT_COND(mcpair->cond, mcpair->mutex); RF_UNLOCK_MUTEX(mcpair->mutex); @@ -291,8 +295,12 @@ rf_VerifyParityBasic(RF_Raid_t *raidPtr, RF_RaidAddr_t raidAddr, #endif RF_LOCK_MUTEX(mcpair->mutex); mcpair->flag = 0; + RF_UNLOCK_MUTEX(mcpair->mutex); + rf_DispatchDAG(wr_dag_h, (void (*) (void *)) rf_MCPairWakeupFunc, (void *) mcpair); + + RF_LOCK_MUTEX(mcpair->mutex); while (!mcpair->flag) RF_WAIT_COND(mcpair->cond, mcpair->mutex); RF_UNLOCK_MUTEX(mcpair->mutex); diff --git a/sys/dev/raidframe/rf_raid1.c b/sys/dev/raidframe/rf_raid1.c index 15aee7ece7b..fe48d1b9cf5 100644 --- a/sys/dev/raidframe/rf_raid1.c +++ b/sys/dev/raidframe/rf_raid1.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_raid1.c,v 1.19 2004/03/01 23:30:59 oster Exp $ */ +/* $NetBSD: rf_raid1.c,v 1.20 2004/03/02 15:47:35 oster 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.19 2004/03/01 23:30:59 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.20 2004/03/02 15:47:35 oster Exp $"); #include "rf_raid.h" #include "rf_raid1.h" @@ -492,9 +492,13 @@ rf_VerifyParityRAID1(RF_Raid_t *raidPtr, RF_RaidAddr_t raidAddr, #endif RF_LOCK_MUTEX(mcpair->mutex); mcpair->flag = 0; + RF_UNLOCK_MUTEX(mcpair->mutex); + /* fire off the write DAG */ rf_DispatchDAG(wr_dag_h, (void (*) (void *)) rf_MCPairWakeupFunc, (void *) mcpair); + + RF_LOCK_MUTEX(mcpair->mutex); while (!mcpair->flag) { RF_WAIT_COND(mcpair->cond, mcpair->mutex); } |
