From 708c19adaf366570611da6c3a7b9d9949b36d21c Mon Sep 17 00:00:00 2001 From: oster Date: Thu, 4 Mar 2004 02:49:58 +0000 Subject: Fix mcpair locking issues -- we really don't need the lock held the entire time we spend in calling rf_DiskIOEnqueue(). --- sys/dev/raidframe/rf_copyback.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sys/dev/raidframe') diff --git a/sys/dev/raidframe/rf_copyback.c b/sys/dev/raidframe/rf_copyback.c index 90a53c46c12..6046f9c9650 100644 --- a/sys/dev/raidframe/rf_copyback.c +++ b/sys/dev/raidframe/rf_copyback.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_copyback.c,v 1.27 2003/12/30 21:59:03 oster Exp $ */ +/* $NetBSD: rf_copyback.c,v 1.28 2004/03/04 02:49:58 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -38,7 +38,7 @@ ****************************************************************************/ #include -__KERNEL_RCSID(0, "$NetBSD: rf_copyback.c,v 1.27 2003/12/30 21:59:03 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_copyback.c,v 1.28 2004/03/04 02:49:58 oster Exp $"); #include @@ -351,9 +351,11 @@ rf_CopybackOne(RF_CopybackDesc_t *desc, int typ, RF_RaidAddr_t addr, RF_LOCK_MUTEX(desc->mcpair->mutex); desc->mcpair->flag = 0; + RF_UNLOCK_MUTEX(desc->mcpair->mutex); rf_DiskIOEnqueue(&raidPtr->Queues[spCol], desc->readreq, RF_IO_NORMAL_PRIORITY); + RF_LOCK_MUTEX(desc->mcpair->mutex); while (!desc->mcpair->flag) { RF_WAIT_MCPAIR(desc->mcpair); } -- cgit