When the 'if' condition is true, the function will return, so there

is no need for this chunk of code to be in the 'else' part.
Remove the 'else', and left-shift the code.

No functional changes.
This commit is contained in:
oster 2004-02-29 20:11:26 +00:00
parent 15a3e59b1f
commit d272af6ed2
1 changed files with 73 additions and 72 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: rf_raid5.c,v 1.11 2004/01/02 21:41:08 oster Exp $ */
/* $NetBSD: rf_raid5.c,v 1.12 2004/02/29 20:11:26 oster Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@ -33,7 +33,7 @@
*****************************************************************************/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: rf_raid5.c,v 1.11 2004/01/02 21:41:08 oster Exp $");
__KERNEL_RCSID(0, "$NetBSD: rf_raid5.c,v 1.12 2004/02/29 20:11:26 oster Exp $");
#include <dev/raidframe/raidframevar.h>
@ -175,84 +175,85 @@ rf_RaidFiveDagSelect(RF_Raid_t *raidPtr, RF_IoType_t type,
RF_ERRORMSG("Multiple disks failed in a single group! Aborting I/O operation.\n");
*createFunc = NULL;
return;
} else
if (asmap->numDataFailed + asmap->numParityFailed == 1) {
}
/* if under recon & already reconstructed, redirect
* the access to the spare drive and eliminate the
* failure indication */
failedPDA = asmap->failedPDAs[0];
fcol = failedPDA->col;
rstat = raidPtr->status;
prior_recon = (rstat == rf_rs_reconfigured) || (
if (asmap->numDataFailed + asmap->numParityFailed == 1) {
/* if under recon & already reconstructed, redirect
* the access to the spare drive and eliminate the
* failure indication */
failedPDA = asmap->failedPDAs[0];
fcol = failedPDA->col;
rstat = raidPtr->status;
prior_recon = (rstat == rf_rs_reconfigured) || (
(rstat == rf_rs_reconstructing) ?
rf_CheckRUReconstructed(raidPtr->reconControl->reconMap, failedPDA->startSector) : 0
);
if (prior_recon) {
RF_RowCol_t oc = failedPDA->col;
RF_SectorNum_t oo = failedPDA->startSector;
if (layoutPtr->map->flags & RF_DISTRIBUTE_SPARE) { /* redirect to dist
* spare space */
if (failedPDA == asmap->parityInfo) {
/* parity has failed */
(layoutPtr->map->MapParity) (raidPtr, failedPDA->raidAddress,
&failedPDA->col, &failedPDA->startSector, RF_REMAP);
if (asmap->parityInfo->next) { /* redir 2nd component,
* if any */
RF_PhysDiskAddr_t *p = asmap->parityInfo->next;
RF_SectorNum_t SUoffs = p->startSector % layoutPtr->sectorsPerStripeUnit;
p->col = failedPDA->col;
p->startSector = rf_RaidAddressOfPrevStripeUnitBoundary(layoutPtr, failedPDA->startSector) +
SUoffs; /* cheating:
* startSector is not
* really a RAID address */
}
} else
if (asmap->parityInfo->next && failedPDA == asmap->parityInfo->next) {
RF_ASSERT(0); /* should not ever
* happen */
} else {
/* data has failed */
(layoutPtr->map->MapSector) (raidPtr, failedPDA->raidAddress,
&failedPDA->col, &failedPDA->startSector, RF_REMAP);
}
} else { /* redirect to dedicated spare
* space */
failedPDA->col = raidPtr->Disks[fcol].spareCol;
/* the parity may have two distinct
* components, both of which may need
* to be redirected */
if (asmap->parityInfo->next) {
if (failedPDA == asmap->parityInfo) {
failedPDA->next->col = failedPDA->col;
} else
if (failedPDA == asmap->parityInfo->next) { /* paranoid: should
* never occur */
asmap->parityInfo->col = failedPDA->col;
}
if (prior_recon) {
RF_RowCol_t oc = failedPDA->col;
RF_SectorNum_t oo = failedPDA->startSector;
if (layoutPtr->map->flags & RF_DISTRIBUTE_SPARE) { /* redirect to dist
* spare space */
if (failedPDA == asmap->parityInfo) {
/* parity has failed */
(layoutPtr->map->MapParity) (raidPtr, failedPDA->raidAddress,
&failedPDA->col, &failedPDA->startSector, RF_REMAP);
if (asmap->parityInfo->next) { /* redir 2nd component,
* if any */
RF_PhysDiskAddr_t *p = asmap->parityInfo->next;
RF_SectorNum_t SUoffs = p->startSector % layoutPtr->sectorsPerStripeUnit;
p->col = failedPDA->col;
p->startSector = rf_RaidAddressOfPrevStripeUnitBoundary(layoutPtr, failedPDA->startSector) +
SUoffs; /* cheating:
* startSector is not
* really a RAID address */
}
} else
if (asmap->parityInfo->next && failedPDA == asmap->parityInfo->next) {
RF_ASSERT(0); /* should not ever
* happen */
} else {
/* data has failed */
(layoutPtr->map->MapSector) (raidPtr, failedPDA->raidAddress,
&failedPDA->col, &failedPDA->startSector, RF_REMAP);
}
} else { /* redirect to dedicated spare
* space */
failedPDA->col = raidPtr->Disks[fcol].spareCol;
/* the parity may have two distinct
* components, both of which may need
* to be redirected */
if (asmap->parityInfo->next) {
if (failedPDA == asmap->parityInfo) {
failedPDA->next->col = failedPDA->col;
} else
if (failedPDA == asmap->parityInfo->next) { /* paranoid: should
* never occur */
asmap->parityInfo->col = failedPDA->col;
}
}
RF_ASSERT(failedPDA->col != -1);
if (rf_dagDebug || rf_mapDebug) {
printf("raid%d: Redirected type '%c' c %d o %ld -> c %d o %ld\n",
raidPtr->raidid, type, oc,
(long) oo, failedPDA->col,
(long) failedPDA->startSector);
}
asmap->numDataFailed = asmap->numParityFailed = 0;
}
RF_ASSERT(failedPDA->col != -1);
if (rf_dagDebug || rf_mapDebug) {
printf("raid%d: Redirected type '%c' c %d o %ld -> c %d o %ld\n",
raidPtr->raidid, type, oc,
(long) oo, failedPDA->col,
(long) failedPDA->startSector);
}
asmap->numDataFailed = asmap->numParityFailed = 0;
}
}
/* all dags begin/end with block/unblock node therefore, hdrSucc &
* termAnt counts should always be 1 also, these counts should not be
* visible outside dag creation routines - manipulating the counts