From 97682553c485a3bf3fbe44105cafd8da7a4bf7b9 Mon Sep 17 00:00:00 2001 From: oster Date: Mon, 18 Jul 2005 15:32:01 +0000 Subject: 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. --- sys/dev/raidframe/rf_reconstruct.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sys/dev/raidframe') 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 -__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 #include @@ -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; -- cgit