diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/usr/hwas/common/deconfigGard.C | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C index f844ec912..7e77b4ef7 100644 --- a/src/usr/hwas/common/deconfigGard.C +++ b/src/usr/hwas/common/deconfigGard.C @@ -568,13 +568,6 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl( { GardRecord l_gardRecord = *l_itr; - //Continue only with FATAL/UNRECOVERABLE gard errors. - if((l_gardRecord.iv_errorType != GARD_Fatal)&& - (l_gardRecord.iv_errorType != GARD_Unrecoverable)) - { - //Skip recoverable gard records - continue; - } // Find the associated Target Target * l_pTarget = targetService().toTarget(l_gardRecord.iv_targetId); @@ -590,6 +583,16 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl( continue; } + //Continue only with FATAL/UNRECOVERABLE gard errors. + //All gard on node deosnt need resource recovery + if(((l_gardRecord.iv_errorType != GARD_Fatal)&& + (l_gardRecord.iv_errorType != GARD_Unrecoverable))|| + (l_pTarget->getAttr<ATTR_TYPE>() == TYPE_NODE)) + { + //Skip recoverable gard records + continue; + } + // if this does NOT match, continue to next in loop if (i_pPredicate && ((*i_pPredicate)(l_pTarget) == false)) { @@ -726,9 +729,10 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl( } continue; } - //Continue only with recoverable gard errors. + //Continue only with recoverable or non node gard errors. if((l_gardRecord.iv_errorType == GARD_Fatal)|| - (l_gardRecord.iv_errorType == GARD_Unrecoverable)) + (l_gardRecord.iv_errorType == GARD_Unrecoverable)|| + (l_pTarget->getAttr<ATTR_TYPE>() == TYPE_NODE)) { //Skip non-recoverable gard records continue; |