/* * fail_on_error * If ERROR then print status and exit. */ void fail_on_error(am_status_t status, const char *method_name) { if (status != AM_SUCCESS) { fprintf(stderr,"ERROR: %s failed with status code = %u (%s)\n", method_name, status, get_status_name(status)); fflush (stderr); exit(EXIT_FAILURE); } }
StorageDevice::status_t StorageDevice::get_aodc_status() const { // smart-disabled drives are known to print some garbage, so // let's protect us from it. if (get_smart_status() != status_enabled) return status_unsupported; if (aodc_status_.defined()) // cached return value return aodc_status_.value(); status_t status = status_unknown; // for now bool aodc_supported = false; int found = 0; for (SmartctlParser::prop_list_t::const_iterator iter = properties_.begin(); iter != properties_.end(); ++iter) { if (iter->section == StorageProperty::section_internal) { if (iter->generic_name == "aodc_enabled") { // if this is not present at all, we set the unknown status. status = (iter->value_bool ? status_enabled : status_disabled); //++found; continue; } if (iter->generic_name == "aodc_support") { aodc_supported = iter->value_bool; ++found; continue; } if (found >= 2) break; } } if (!aodc_supported) status = status_unsupported; // if it's supported, then status may be enabled, disabled or unknown. aodc_status_ = status; // store to cache debug_out_info("app", DBG_FUNC_MSG << "AODC status: " << get_status_name(status) << "\n"); return status; }