cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] cluster/cmirror-kernel/src dm-cmirror-common.h ...
@ 2007-02-21 17:14 jbrassow
  0 siblings, 0 replies; only message in thread
From: jbrassow @ 2007-02-21 17:14 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	jbrassow at sourceware.org	2007-02-21 17:14:44

Modified files:
	cmirror-kernel/src: dm-cmirror-common.h dm-cmirror-server.c 

Log message:
	A previous fix that caused cluster mirrors to reattempt recovery to
	resolve intermittent drive failure, now causes indefinite retries
	during permenent drive failure.
	
	This can slow down the machine dramatically, especially if there are
	several mirrors active on the system that utilize the same failed
	drive.
	
	We now attempt one extra pass.  Further extra passes will require
	a reload of the mirror (as before).

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror-kernel/src/dm-cmirror-common.h.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.11&r2=1.1.2.12
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror-kernel/src/dm-cmirror-server.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.23&r2=1.1.2.24

--- cluster/cmirror-kernel/src/Attic/dm-cmirror-common.h	2007/02/14 17:44:07	1.1.2.11
+++ cluster/cmirror-kernel/src/Attic/dm-cmirror-common.h	2007/02/21 17:14:44	1.1.2.12
@@ -99,6 +99,7 @@
 	uint32_t *sync_bits;
 	uint32_t *recovering_bits;	/* FIXME: this seems excessive */
 
+	int sync_pass;          /* number of passes attempting to resync */
 	int sync_search;
 
 	/* Resync flag */
--- cluster/cmirror-kernel/src/Attic/dm-cmirror-server.c	2007/02/20 19:35:10	1.1.2.23
+++ cluster/cmirror-kernel/src/Attic/dm-cmirror-server.c	2007/02/21 17:14:44	1.1.2.24
@@ -229,8 +229,9 @@
 		 * FIXME: pvmove is not supported yet, but when it is,
 		 * an audit of sync_count changes will need to be made
 		 */
-		if (lc->sync_count < lc->region_count) {
+		if ((lc->sync_count < lc->region_count) && !lc->sync_pass) {
 			lc->sync_search = 0;
+			lc->sync_pass++;
 		} else {
 			return 0;
 		}
@@ -1029,7 +1030,6 @@
 	return 0;
 }
 
-
 static int cluster_log_serverd(void *data){
 	int error;
 	struct log_c *lc;



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-02-21 17:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-21 17:14 [Cluster-devel] cluster/cmirror-kernel/src dm-cmirror-common.h jbrassow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).