Module Name:    src
Committed By:   christos
Date:           Fri Jan 13 04:22:16 UTC 2017

Modified Files:
        src/sys/dev/raidframe: rf_disks.c

Log Message:
Don't consider a disk hosed if we did not find a column for it; dedup code.


To generate a diff of this commit:
cvs rdiff -u -r1.87 -r1.88 src/sys/dev/raidframe/rf_disks.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/raidframe/rf_disks.c
diff -u src/sys/dev/raidframe/rf_disks.c:1.87 src/sys/dev/raidframe/rf_disks.c:1.88
--- src/sys/dev/raidframe/rf_disks.c:1.87	Sat Oct 18 04:33:28 2014
+++ src/sys/dev/raidframe/rf_disks.c	Thu Jan 12 23:22:16 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: rf_disks.c,v 1.87 2014/10/18 08:33:28 snj Exp $	*/
+/*	$NetBSD: rf_disks.c,v 1.88 2017/01/13 04:22:16 christos Exp $	*/
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -60,7 +60,7 @@
  ***************************************************************/
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_disks.c,v 1.87 2014/10/18 08:33:28 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_disks.c,v 1.88 2017/01/13 04:22:16 christos Exp $");
 
 #include <dev/raidframe/raidframevar.h>
 
@@ -700,6 +700,24 @@ static int rf_check_label_vitals(RF_Raid
 }
 
 
+static void
+rf_handle_hosed(RF_Raid_t *raidPtr, RF_Config_t *cfgPtr, int hosed_column)
+{
+	printf("Hosed component: %s\n", &cfgPtr->devnames[0][hosed_column][0]);
+	if (!cfgPtr->force)
+		return;
+
+	/* we'll fail this component, as if there are
+	   other major errors, we arn't forcing things
+	   and we'll abort the config anyways */
+	if (raidPtr->Disks[hosed_column].status == rf_ds_failed)
+		return;
+
+	raidPtr->Disks[hosed_column].status = rf_ds_failed;
+	raidPtr->numFailures++;
+	raidPtr->status = rf_rs_degraded;
+}
+
 /*
 
    rf_CheckLabels() - check all the component labels for consistency.
@@ -727,11 +745,9 @@ rf_CheckLabels(RF_Raid_t *raidPtr, RF_Co
 	int hosed_column;
 	int too_fatal;
 	int parity_good;
-	int force;
 
 	hosed_column = -1;
 	too_fatal = 0;
-	force = cfgPtr->force;
 
 	/*
 	   We're going to try to be a little intelligent here.  If one
@@ -823,17 +839,8 @@ rf_CheckLabels(RF_Raid_t *raidPtr, RF_Co
 					break;
 				}
 			}
-			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);
 		} else {
 			too_fatal = 1;
 		}
@@ -889,19 +896,8 @@ rf_CheckLabels(RF_Raid_t *raidPtr, RF_Co
 					}
 				}
 			}
-			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 */
-				if (raidPtr->Disks[hosed_column].status != rf_ds_failed) {
-					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);
 		} else {
 			too_fatal = 1;
 		}

Reply via email to