summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
diff options
context:
space:
mode:
authoroster <oster@NetBSD.org>2005-07-18 15:32:01 +0000
committeroster <oster@NetBSD.org>2005-07-18 15:32:01 +0000
commit97682553c485a3bf3fbe44105cafd8da7a4bf7b9 (patch)
tree44ded68df598e1af55ff96a2e2212789ecca8068 /sys/dev/raidframe
parent2622309630bc81f3f882fa6397c5c646b367c216 (diff)
If rf_SubmitReconBuffer indicates the submission was blocked (for
whatever reason), return 0 instead of the default RF_RECON_READ_STOPPED. Returning RF_RECON_READ_STOPPED would result in rf_ContinueReconstructFailedDisk() thinking that the given component was "done" and breaking out of the main reconstruction loop far too early. Reconstruction still worked correctly as long as there were no errors, but RAIDframe wouldn't be in a position to properly handle read/write errors during reconstruction. This fixes the "raidctl's progress bar spins at 0% until reconstruction finishes" problem.
Diffstat (limited to 'sys/dev/raidframe')
-rw-r--r--sys/dev/raidframe/rf_reconstruct.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/raidframe/rf_reconstruct.c b/sys/dev/raidframe/rf_reconstruct.c
index 51b66c83838..913a956d59a 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.88 2005/06/08 02:00:53 oster Exp $ */
+/* $NetBSD: rf_reconstruct.c,v 1.89 2005/07/18 15:32:01 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.88 2005/06/08 02:00:53 oster Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.89 2005/07/18 15:32:01 oster Exp $");
#include <sys/time.h>
#include <sys/buf.h>
@@ -881,6 +881,8 @@ ProcessReconEvent(RF_Raid_t *raidPtr, RF_ReconEvent_t *event)
Dprintf1("RECON: submitblocked=%d\n", submitblocked);
if (!submitblocked)
retcode = IssueNextReadRequest(raidPtr, event->col);
+ else
+ retcode = 0;
}
break;