diff options
| author | oster <oster@NetBSD.org> | 2004-02-29 23:03:30 +0000 |
|---|---|---|
| committer | oster <oster@NetBSD.org> | 2004-02-29 23:03:30 +0000 |
| commit | 4b8d5fc8b6acb7597fc332490aa8f604ebabb87b (patch) | |
| tree | 5218c71eb4c84b59e83374be54308789a087bcf0 /sys/dev/raidframe | |
| parent | e9ec0296120796b84f6e1fa794fa669fefa469bc (diff) | |
Unlock the mcpair mutex before we call rf_DispatchDAG(), and re-lock it once
we are back. Makes things much happier on SMP boxen. Problem noted
by SimonB. (Thanks!)
Diffstat (limited to 'sys/dev/raidframe')
| -rw-r--r-- | sys/dev/raidframe/rf_raid1.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/raidframe/rf_raid1.c b/sys/dev/raidframe/rf_raid1.c index 0fd92691927..440de4fc2f4 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.17 2004/01/10 00:56:28 oster Exp $ */ +/* $NetBSD: rf_raid1.c,v 1.18 2004/02/29 23:03:30 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.17 2004/01/10 00:56:28 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.18 2004/02/29 23:03:30 oster Exp $"); #include "rf_raid.h" #include "rf_raid1.h" @@ -370,8 +370,12 @@ rf_VerifyParityRAID1(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 == 0) { RF_WAIT_MCPAIR(mcpair); } |
