From 7bd09b0f2b2b45c52f043c17ee95a8939af2cfe8 Mon Sep 17 00:00:00 2001 From: oster Date: Fri, 5 Mar 2004 03:22:05 +0000 Subject: Introduce RF_DEBUG_DAG and use it to #if-out rf_dagDebug sections. (i386 GENERIC kernel shrinks by 1.6K) --- sys/dev/raidframe/rf_archs.h | 6 +++++- sys/dev/raidframe/rf_dagdegrd.c | 12 ++++++++++-- sys/dev/raidframe/rf_dagdegwr.c | 6 ++++-- sys/dev/raidframe/rf_dagffrd.c | 10 ++++++++-- sys/dev/raidframe/rf_dagffwr.c | 10 ++++++++-- sys/dev/raidframe/rf_dagutils.c | 12 ++++++++++-- sys/dev/raidframe/rf_raid1.c | 8 ++++++-- sys/dev/raidframe/rf_raid5.c | 12 +++++++++--- 8 files changed, 60 insertions(+), 16 deletions(-) (limited to 'sys/dev/raidframe') diff --git a/sys/dev/raidframe/rf_archs.h b/sys/dev/raidframe/rf_archs.h index aac28be20bd..beb5cd81679 100644 --- a/sys/dev/raidframe/rf_archs.h +++ b/sys/dev/raidframe/rf_archs.h @@ -1,4 +1,4 @@ -/* $NetBSD: rf_archs.h,v 1.22 2004/02/29 23:27:24 oster Exp $ */ +/* $NetBSD: rf_archs.h,v 1.23 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -108,6 +108,10 @@ #define RF_RECON_STATS 1 #endif +#ifndef RF_DEBUG_DAG +#define RF_DEBUG_DAG 0 +#endif + #ifndef RF_DEBUG_VALIDATE_DAG #define RF_DEBUG_VALIDATE_DAG 0 #endif diff --git a/sys/dev/raidframe/rf_dagdegrd.c b/sys/dev/raidframe/rf_dagdegrd.c index f2faa6aba8b..bcf9dfaba25 100644 --- a/sys/dev/raidframe/rf_dagdegrd.c +++ b/sys/dev/raidframe/rf_dagdegrd.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagdegrd.c,v 1.18 2004/01/10 00:56:27 oster Exp $ */ +/* $NetBSD: rf_dagdegrd.c,v 1.19 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rf_dagdegrd.c,v 1.18 2004/01/10 00:56:27 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagdegrd.c,v 1.19 2004/03/05 03:22:05 oster Exp $"); #include @@ -126,9 +126,11 @@ rf_CreateRaidOneDegradedReadDAG(RF_Raid_t *raidPtr, useMirror = 0; parityStripeID = rf_RaidAddressToParityStripeID(&(raidPtr->Layout), asmap->raidAddress, &which_ru); +#if RF_DEBUG_DAG if (rf_dagDebug) { printf("[Creating RAID level 1 degraded read DAG]\n"); } +#endif dag_h->creator = "RaidOneDegradedReadDAG"; /* alloc the Wnd nodes and the Wmir node */ if (asmap->numDataFailed == 0) @@ -278,9 +280,11 @@ rf_CreateDegradedReadDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, asmap->raidAddress, &which_ru); sectorsPerSU = layoutPtr->sectorsPerStripeUnit; +#if RF_DEBUG_DAG if (rf_dagDebug) { printf("[Creating degraded read DAG]\n"); } +#endif RF_ASSERT(asmap->numDataFailed == 1); dag_h->creator = "DegradedReadDAG"; @@ -543,9 +547,11 @@ rf_CreateRaidCDegradedReadDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, parityStripeID = rf_RaidAddressToParityStripeID(&(raidPtr->Layout), asmap->raidAddress, &which_ru); +#if RF_DEBUG_DAG if (rf_dagDebug) { printf("[Creating RAID C degraded read DAG]\n"); } +#endif dag_h->creator = "RaidCDegradedReadDAG"; /* alloc the Wnd nodes and the Wmir node */ if (asmap->numDataFailed == 0) @@ -995,8 +1001,10 @@ rf_DoubleDegRead(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, RF_PhysDiskAddr_t *failedPDAtwo = asmap->failedPDAs[1]; RF_StripeNum_t parityStripeID = rf_RaidAddressToParityStripeID(layoutPtr, asmap->raidAddress, &which_ru); +#if RF_DEBUG_DAG if (rf_dagDebug) printf("[Creating Double Degraded Read DAG]\n"); +#endif rf_DD_GenerateFailedAccessASMs(raidPtr, asmap, &npdas, &nRrdNodes, &pqPDAs, &nPQNodes, allocList); nRudNodes = asmap->numStripeUnitsAccessed - (asmap->numDataFailed); diff --git a/sys/dev/raidframe/rf_dagdegwr.c b/sys/dev/raidframe/rf_dagdegwr.c index a919a84b478..0a14ba4f444 100644 --- a/sys/dev/raidframe/rf_dagdegwr.c +++ b/sys/dev/raidframe/rf_dagdegwr.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagdegwr.c,v 1.15 2004/01/10 00:56:27 oster Exp $ */ +/* $NetBSD: rf_dagdegwr.c,v 1.16 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rf_dagdegwr.c,v 1.15 2004/01/10 00:56:27 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagdegwr.c,v 1.16 2004/03/05 03:22:05 oster Exp $"); #include @@ -183,8 +183,10 @@ rf_CommonCreateSimpleDegradedWriteDAG(RF_Raid_t *raidPtr, * disk */ failedPDA = asmap->failedPDAs[0]; +#if RF_DEBUG_DAG if (rf_dagDebug) printf("[Creating degraded-write DAG]\n"); +#endif RF_ASSERT(asmap->numDataFailed == 1); dag_h->creator = "SimpleDegradedWriteDAG"; diff --git a/sys/dev/raidframe/rf_dagffrd.c b/sys/dev/raidframe/rf_dagffrd.c index 17ac6121586..62aecd9b713 100644 --- a/sys/dev/raidframe/rf_dagffrd.c +++ b/sys/dev/raidframe/rf_dagffrd.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagffrd.c,v 1.11 2004/01/10 00:56:27 oster Exp $ */ +/* $NetBSD: rf_dagffrd.c,v 1.12 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rf_dagffrd.c,v 1.11 2004/01/10 00:56:27 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagffrd.c,v 1.12 2004/03/05 03:22:05 oster Exp $"); #include @@ -145,15 +145,19 @@ rf_CreateNonredundantDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, doFunc = rf_DiskReadFunc; undoFunc = rf_DiskReadUndoFunc; name = "R "; +#if RF_DEBUG_DAG if (rf_dagDebug) printf("[Creating non-redundant read DAG]\n"); +#endif break; case RF_IO_TYPE_WRITE: doFunc = rf_DiskWriteFunc; undoFunc = rf_DiskWriteUndoFunc; name = "W "; +#if RF_DEBUG_DAG if (rf_dagDebug) printf("[Creating non-redundant write DAG]\n"); +#endif break; default: RF_PANIC(); @@ -313,9 +317,11 @@ CreateMirrorReadDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, n = asmap->numStripeUnitsAccessed; dag_h->creator = "RaidOneReadDAG"; +#if RF_DEBUG_DAG if (rf_dagDebug) { printf("[Creating RAID level 1 read DAG]\n"); } +#endif /* * This dag can not commit until the commit node is reached * errors prior to the commit point imply the dag has failed. diff --git a/sys/dev/raidframe/rf_dagffwr.c b/sys/dev/raidframe/rf_dagffwr.c index 8e6c0de9594..9fdc6fe76de 100644 --- a/sys/dev/raidframe/rf_dagffwr.c +++ b/sys/dev/raidframe/rf_dagffwr.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagffwr.c,v 1.18 2004/02/21 20:06:29 oster Exp $ */ +/* $NetBSD: rf_dagffwr.c,v 1.19 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rf_dagffwr.c,v 1.18 2004/02/21 20:06:29 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagffwr.c,v 1.19 2004/03/05 03:22:05 oster Exp $"); #include @@ -180,9 +180,11 @@ rf_CommonCreateLargeWriteDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, asmap->raidAddress, &which_ru); +#if RF_DEBUG_DAG if (rf_dagDebug) { printf("[Creating large-write DAG]\n"); } +#endif dag_h->creator = "LargeWriteDAG"; dag_h->numCommitNodes = 1; @@ -497,9 +499,11 @@ rf_CommonCreateSmallWriteDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, numDataNodes = asmap->numStripeUnitsAccessed; numParityNodes = (asmap->parityInfo->next) ? 2 : 1; +#if RF_DEBUG_DAG if (rf_dagDebug) { printf("[Creating small-write DAG]\n"); } +#endif RF_ASSERT(numDataNodes > 0); dag_h->creator = "SmallWriteDAG"; @@ -1005,9 +1009,11 @@ rf_CreateRaidOneWriteDAG(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, parityStripeID = rf_RaidAddressToParityStripeID(&(raidPtr->Layout), asmap->raidAddress, &which_ru); +#if RF_DEBUG_DAG if (rf_dagDebug) { printf("[Creating RAID level 1 write DAG]\n"); } +#endif dag_h->creator = "RaidOneWriteDAG"; /* 2 implies access not SU aligned */ diff --git a/sys/dev/raidframe/rf_dagutils.c b/sys/dev/raidframe/rf_dagutils.c index 0935f55c74f..e6e822cee36 100644 --- a/sys/dev/raidframe/rf_dagutils.c +++ b/sys/dev/raidframe/rf_dagutils.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_dagutils.c,v 1.30 2004/03/05 02:53:55 oster Exp $ */ +/* $NetBSD: rf_dagutils.c,v 1.31 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ *****************************************************************************/ #include -__KERNEL_RCSID(0, "$NetBSD: rf_dagutils.c,v 1.30 2004/03/05 02:53:55 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_dagutils.c,v 1.31 2004/03/05 03:22:05 oster Exp $"); #include @@ -739,12 +739,14 @@ rf_redirect_asm(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap) RF_ASSERT(raidPtr->status == rf_rs_reconstructing); for (pda = asmap->physInfo; pda; pda = pda->next) { if (pda->col == fcol) { +#if RF_DEBUG_DAG if (rf_dagDebug) { if (!rf_CheckRUReconstructed(raidPtr->reconControl->reconMap, pda->startSector)) { RF_PANIC(); } } +#endif /* printf("Remapped data for large write\n"); */ if (ds) { raidPtr->Layout.map->MapSector(raidPtr, pda->raidAddress, @@ -756,11 +758,13 @@ rf_redirect_asm(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap) } for (pda = asmap->parityInfo; pda; pda = pda->next) { if (pda->col == fcol) { +#if RF_DEBUG_DAG if (rf_dagDebug) { if (!rf_CheckRUReconstructed(raidPtr->reconControl->reconMap, pda->startSector)) { RF_PANIC(); } } +#endif } if (ds) { (raidPtr->Layout.map->MapParity) (raidPtr, pda->raidAddress, &pda->col, &pda->startSector, RF_REMAP); @@ -946,9 +950,11 @@ rf_GenerateFailedAccessASMs(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, * buf if not needed */ RF_MallocAndAdd(rdBuf, rf_RaidAddressToByte(raidPtr, numSect[0] + numSect[1] + numParitySect), (char *), allocList); bufP = rdBuf; +#if RF_DEBUG_DAG if (rf_degDagDebug) printf("Newly allocated buffer (%d bytes) is 0x%lx\n", (int) rf_RaidAddressToByte(raidPtr, numSect[0] + numSect[1] + numParitySect), (unsigned long) bufP); +#endif } /* now walk through the pdas one last time and assign buffer pointers * (ugh!). Again, ignore the parity. also, count nodes to find out @@ -993,6 +999,7 @@ rf_GenerateFailedAccessASMs(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, RF_ERRORMSG("GenerateFailedAccessASMs: did not find failedPDA in asm list\n"); RF_ASSERT(0); } +#if RF_DEBUG_DAG if (rf_degDagDebug) { if (new_asm_h[0]) { printf("First asm:\n"); @@ -1003,6 +1010,7 @@ rf_GenerateFailedAccessASMs(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, rf_PrintFullAccessStripeMap(new_asm_h[1], 1); } } +#endif } diff --git a/sys/dev/raidframe/rf_raid1.c b/sys/dev/raidframe/rf_raid1.c index 67718722448..363a0a07140 100644 --- a/sys/dev/raidframe/rf_raid1.c +++ b/sys/dev/raidframe/rf_raid1.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_raid1.c,v 1.22 2004/03/03 13:29:00 oster Exp $ */ +/* $NetBSD: rf_raid1.c,v 1.23 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ *****************************************************************************/ #include -__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.22 2004/03/03 13:29:00 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_raid1.c,v 1.23 2004/03/05 03:22:05 oster Exp $"); #include "rf_raid.h" #include "rf_raid1.h" @@ -178,8 +178,10 @@ rf_RAID1DagSelect(RF_Raid_t *raidPtr, RF_IoType_t type, RF_ASSERT(RF_IO_IS_R_OR_W(type)); if (asmap->numDataFailed + asmap->numParityFailed > 1) { +#if RF_DEBUG_DAG if (rf_dagDebug) RF_ERRORMSG("Multiple disks failed in a single group! Aborting I/O operation.\n"); +#endif *createFunc = NULL; return; } @@ -221,6 +223,7 @@ rf_RAID1DagSelect(RF_Raid_t *raidPtr, RF_IoType_t type, } } } +#if RF_DEBUG_DAG > 0 || RF_DEBUG_MAP > 0 if (rf_dagDebug || rf_mapDebug) { printf("raid%d: Redirected type '%c' c %d o %ld -> c %d o %ld\n", raidPtr->raidid, type, oc, @@ -228,6 +231,7 @@ rf_RAID1DagSelect(RF_Raid_t *raidPtr, RF_IoType_t type, failedPDA->col, (long) failedPDA->startSector); } +#endif asmap->numDataFailed = asmap->numParityFailed = 0; } } diff --git a/sys/dev/raidframe/rf_raid5.c b/sys/dev/raidframe/rf_raid5.c index f147b24595a..09f159961c6 100644 --- a/sys/dev/raidframe/rf_raid5.c +++ b/sys/dev/raidframe/rf_raid5.c @@ -1,4 +1,4 @@ -/* $NetBSD: rf_raid5.c,v 1.12 2004/02/29 20:11:26 oster Exp $ */ +/* $NetBSD: rf_raid5.c,v 1.13 2004/03/05 03:22:05 oster Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. @@ -33,7 +33,7 @@ *****************************************************************************/ #include -__KERNEL_RCSID(0, "$NetBSD: rf_raid5.c,v 1.12 2004/02/29 20:11:26 oster Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_raid5.c,v 1.13 2004/03/05 03:22:05 oster Exp $"); #include @@ -171,8 +171,10 @@ rf_RaidFiveDagSelect(RF_Raid_t *raidPtr, RF_IoType_t type, if ((asmap->numDataFailed + asmap->numParityFailed > 1) || (raidPtr->numFailures > 1)){ +#if RF_DEBUG_DAG if (rf_dagDebug) RF_ERRORMSG("Multiple disks failed in a single group! Aborting I/O operation.\n"); +#endif *createFunc = NULL; return; } @@ -190,9 +192,11 @@ rf_RaidFiveDagSelect(RF_Raid_t *raidPtr, RF_IoType_t type, rf_CheckRUReconstructed(raidPtr->reconControl->reconMap, failedPDA->startSector) : 0 ); if (prior_recon) { +#if RF_DEBUG_DAG > 0 || RF_DEBUG_MAP > 0 RF_RowCol_t oc = failedPDA->col; RF_SectorNum_t oo = failedPDA->startSector; - +#endif + if (layoutPtr->map->flags & RF_DISTRIBUTE_SPARE) { /* redirect to dist * spare space */ @@ -245,12 +249,14 @@ rf_RaidFiveDagSelect(RF_Raid_t *raidPtr, RF_IoType_t type, RF_ASSERT(failedPDA->col != -1); +#if RF_DEBUG_DAG > 0 || RF_DEBUG_MAP > 0 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); } +#endif asmap->numDataFailed = asmap->numParityFailed = 0; } } -- cgit