diff options
| author | oster <oster@NetBSD.org> | 2005-07-18 15:32:01 +0000 |
|---|---|---|
| committer | oster <oster@NetBSD.org> | 2005-07-18 15:32:01 +0000 |
| commit | 97682553c485a3bf3fbe44105cafd8da7a4bf7b9 (patch) | |
| tree | 44ded68df598e1af55ff96a2e2212789ecca8068 /sys/dev/raidframe | |
| parent | 2622309630bc81f3f882fa6397c5c646b367c216 (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.c | 6 |
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; |
