+fault_attr_health_error_parse(char *error, __u32 *mask)
+{
+ if (!strcasecmp(error, "local_interrupt")) {
+ *mask |= HSTATUS_LOCAL_INTERRUPT_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "local_dropped")) {
+ *mask |= HSTATUS_LOCAL_DROPPED_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "local_aborted")) {
+ *mask |= HSTATUS_LOCAL_ABORTED_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "local_no_route")) {
+ *mask |= HSTATUS_LOCAL_NO_ROUTE_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "local_error")) {
+ *mask |= HSTATUS_LOCAL_ERROR_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "local_timeout")) {
+ *mask |= HSTATUS_LOCAL_TIMEOUT_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "remote_error")) {
+ *mask |= HSTATUS_REMOTE_ERROR_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "remote_dropped")) {
+ *mask |= HSTATUS_REMOTE_DROPPED_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "remote_timeout")) {
+ *mask |= HSTATUS_REMOTE_TIMEOUT_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "network_timeout")) {
+ *mask |= HSTATUS_NETWORK_TIMEOUT_BIT;
+ return 0;
+ }
+ if (!strcasecmp(error, "random")) {
+ *mask = HSTATUS_RANDOM;
+ return 0;
+ }
+
+ return -1;
+}
+
+static int