It's still a behaviour change.. On Thu, Jan 12, 2017 at 11:22:16PM -0500, Christos Zoulas wrote: > +static void > +rf_handle_hosed(RF_Raid_t *raidPtr, RF_Config_t *cfgPtr, int hosed_column) > +{ > + if (raidPtr->Disks[hosed_column].status == rf_ds_failed) > + return;
equivalent to if (raidPtr->Disks[hosed_column].status != rf_ds_failed) { do stuff } in the second check, but this is first one: > > - printf("Hosed component: %s\n", > - &cfgPtr->devnames[0][hosed_column][0]); > - if (!force) { > - /* we'll fail this component, as if there are > - other major errors, we arn't forcing things > - and we'll abort the config anyways */ > - raidPtr->Disks[hosed_column].status > - = rf_ds_failed; > - raidPtr->numFailures++; > - raidPtr->status = rf_rs_degraded; > - } > + if (hosed_column != -1) > + rf_handle_hosed(raidPtr, cfgPtr, hosed_column); > It always increments numfailures, even if this column has failed in the distant past.