diff options
| author | oster <oster@NetBSD.org> | 2002-10-06 05:23:55 +0000 |
|---|---|---|
| committer | oster <oster@NetBSD.org> | 2002-10-06 05:23:55 +0000 |
| commit | 0567afd1cfa09f8cbdbd99286578d1164df67b81 (patch) | |
| tree | 14113d07f46df48ce31c7148e9eebafdcc38513b /sys/dev/raidframe | |
| parent | 4b7278c7f2d314b647b768ace7a75993aa4f1da5 (diff) | |
Introduce a temp variable, and allocate the ReconCtrl structure before
we protect raidPtr. One less thing for LOCKDEBUG to complain about.
Diffstat (limited to 'sys/dev/raidframe')
| -rw-r--r-- | sys/dev/raidframe/rf_reconstruct.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/raidframe/rf_reconstruct.c b/sys/dev/raidframe/rf_reconstruct.c index 9f36d21b2ed..aa1dec8e466 100644 --- a/sys/dev/raidframe/rf_reconstruct.c +++ b/sys/dev/raidframe/rf_reconstruct.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_reconstruct.c,v 1.45 2002/09/23 03:40:28 oster Exp $ */ +/* $NetBSD: rf_reconstruct.c,v 1.46 2002/10/06 05:23:55 oster 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.45 2002/09/23 03:40:28 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.46 2002/10/06 05:23:55 oster Exp $"); #include <sys/time.h> #include <sys/buf.h> @@ -628,7 +628,7 @@ rf_ContinueReconstructFailedDisk(reconDesc) RF_RowCol_t srow = reconDesc->srow; RF_RowCol_t scol = reconDesc->scol; RF_ReconMap_t *mapPtr; - + RF_ReconCtrl_t *tmp_reconctrl; RF_ReconEvent_t *event; struct timeval etime, elpsd; unsigned long xor_s, xor_resid_us; @@ -659,11 +659,14 @@ rf_ContinueReconstructFailedDisk(reconDesc) case 1: + /* allocate our RF_ReconCTRL_t before we protect raidPtr->reconControl[row] */ + tmp_reconctrl = rf_MakeReconControl(reconDesc, row, col, srow, scol); + RF_LOCK_MUTEX(raidPtr->mutex); /* create the reconstruction control pointer and install it in * the right slot */ - raidPtr->reconControl[row] = rf_MakeReconControl(reconDesc, row, col, srow, scol); + raidPtr->reconControl[row] = tmp_reconctrl; mapPtr = raidPtr->reconControl[row]->reconMap; raidPtr->status[row] = rf_rs_reconstructing; raidPtr->Disks[row][col].status = rf_ds_reconstructing; |
