CVS commit: [netbsd-6-0] src/sys/dev/raidframe

2014-12-02 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Tue Dec  2 22:06:58 UTC 2014

Modified Files:
src/sys/dev/raidframe [netbsd-6-0]: raidframevar.h rf_netbsdkintf.c
rf_reconstruct.c

Log Message:
Pull up following revision(s) (requested by oster in ticket #1194):
sys/dev/raidframe/raidframevar.h: revision 1.17
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.316
sys/dev/raidframe/rf_reconstruct.c: revision 1.121
Fix a long-standing bug related to rebooting while a
reconstruct-to-spare is underway but not yet complete.
The issue was that a component was being marked as a used_spare when
the rebuild started, not when the rebuild was actually finished.
Marking it as a used_spare meant that the component label on the spare
was being updated such that after a reboot the component would be
considered up-to-date, regardless of whether the rebuild actually
completed!
This fix includes:
 1) Add an additional state "rf_ds_rebuilding_spare" which is used
to denote that a spare is currently being rebuilt from the live
components.
 2) Update the comments on the disk states, which were out-of-sync
with reality.
 3) When rebuilding to a spare component, that spare now enters the
state rf_ds_rebuilding_spare instead of the state rf_ds_used_spare.
 4) When the rebuild is actually complete then the spare component
enters the rf_ds_used_spare state.  rf_ds_used_spare is now used
exclusively for the case where the rebuilding to the spare has
completed successfully.
XXX: Someday we need to teach raidctl(8) about this new state, and
take out the backwards compatibility code in rf_netbsdkintf.c (see
RAIDFRAME_GET_INFO in raidioctl()).  For today, this fix needs to be
generic enough that it can get backported without major grief.
XXX: Needs pullup to netbsd-5*, netbsd-6*, and netbsd-7
Fixes PR#49244.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.15.16.1 src/sys/dev/raidframe/raidframevar.h
cvs rdiff -u -r1.295.6.2 -r1.295.6.2.4.1 \
src/sys/dev/raidframe/rf_netbsdkintf.c
cvs rdiff -u -r1.117.8.1 -r1.117.8.1.4.1 \
src/sys/dev/raidframe/rf_reconstruct.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/raidframevar.h
diff -u src/sys/dev/raidframe/raidframevar.h:1.15 src/sys/dev/raidframe/raidframevar.h:1.15.16.1
--- src/sys/dev/raidframe/raidframevar.h:1.15	Sat Feb 19 07:11:09 2011
+++ src/sys/dev/raidframe/raidframevar.h	Tue Dec  2 22:06:58 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: raidframevar.h,v 1.15 2011/02/19 07:11:09 enami Exp $ */
+/*	$NetBSD: raidframevar.h,v 1.15.16.1 2014/12/02 22:06:58 snj Exp $ */
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -384,17 +384,17 @@ struct RF_SparetWait_s {
  * IF YOU ADD A STATE, CHECK TO SEE IF YOU NEED TO MODIFY RF_DEAD_DISK().
  */
 enum RF_DiskStatus_e {
-rf_ds_optimal,  /* no problems */
-rf_ds_failed,   /* reconstruction ongoing */
-rf_ds_reconstructing,   /* reconstruction complete to spare, dead disk
- * not yet replaced */
-rf_ds_dist_spared,  /* reconstruction complete to distributed
+	rf_ds_optimal,  /* no problems */
+	rf_ds_failed,   /* disk has failed */
+	rf_ds_reconstructing,   /* reconstruction ongoing */
+	rf_ds_dist_spared,  /* reconstruction complete to distributed
  * spare space, dead disk not yet replaced */
-rf_ds_spared,   /* reconstruction complete to distributed
- * spare space, dead disk not yet replaced */
-rf_ds_spare,/* an available spare disk */
-rf_ds_used_spare/* a spare which has been used, and hence is
+	rf_ds_spared,   /* reconstruction complete, dead disk not 
+   yet replaced */
+	rf_ds_spare,/* an available spare disk */
+	rf_ds_used_spare,   /* a spare which has been used, and hence is
  * not available */
+	rf_ds_rebuilding_spare	/* a spare which is being rebuilt to */
 };
 typedef enum RF_DiskStatus_e RF_DiskStatus_t;
 

Index: src/sys/dev/raidframe/rf_netbsdkintf.c
diff -u src/sys/dev/raidframe/rf_netbsdkintf.c:1.295.6.2 src/sys/dev/raidframe/rf_netbsdkintf.c:1.295.6.2.4.1
--- src/sys/dev/raidframe/rf_netbsdkintf.c:1.295.6.2	Mon Aug 13 19:41:29 2012
+++ src/sys/dev/raidframe/rf_netbsdkintf.c	Tue Dec  2 22:06:58 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rf_netbsdkintf.c,v 1.295.6.2 2012/08/13 19:41:29 riz Exp $	*/
+/*	$NetBSD: rf_netbsdkintf.c,v 1.295.6.2.4.1 2014/12/02 22:06:58 snj Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2008-2011 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
  ***/
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.295.6.2 2012/08/13 19:4

CVS commit: [netbsd-6-0] src/sys/dev/raidframe

2012-12-16 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Mon Dec 17 00:25:41 UTC 2012

Modified Files:
src/sys/dev/raidframe [netbsd-6-0]: rf_driver.c

Log Message:
Pull up following revision(s) (requested by msaitoh in ticket #753):
sys/dev/raidframe/rf_driver.c: revision 1.131
Fix off by one read.


To generate a diff of this commit:
cvs rdiff -u -r1.129 -r1.129.16.1 src/sys/dev/raidframe/rf_driver.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_driver.c
diff -u src/sys/dev/raidframe/rf_driver.c:1.129 src/sys/dev/raidframe/rf_driver.c:1.129.16.1
--- src/sys/dev/raidframe/rf_driver.c:1.129	Fri May 27 22:48:24 2011
+++ src/sys/dev/raidframe/rf_driver.c	Mon Dec 17 00:25:41 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: rf_driver.c,v 1.129 2011/05/27 22:48:24 yamt Exp $	*/
+/*	$NetBSD: rf_driver.c,v 1.129.16.1 2012/12/17 00:25:41 riz Exp $	*/
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -66,7 +66,7 @@
 
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: rf_driver.c,v 1.129 2011/05/27 22:48:24 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_driver.c,v 1.129.16.1 2012/12/17 00:25:41 riz Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_raid_diagnostic.h"
@@ -881,7 +881,7 @@ rf_ConfigureDebug(RF_Config_t *cfgPtr)
 	int i;
 
 	rf_ResetDebugOptions();
-	for (i = 0; cfgPtr->debugVars[i][0] && i < RF_MAXDBGV; i++) {
+	for (i = 0; i < RF_MAXDBGV && cfgPtr->debugVars[i][0]; i++) {
 		name_p = rf_find_non_white(&cfgPtr->debugVars[i][0]);
 		white_p = rf_find_white(name_p);	/* skip to start of 2nd
 			 * word */