[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] cluster/cmirror-kernel/src dm-cmirror-client.c



CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL4
Changes by:	jbrassow sourceware org	2006-11-27 22:36:48

Modified files:
	cmirror-kernel/src: dm-cmirror-client.c 

Log message:
	Bug 214517: hung cmirror operations due to looping mirror region requests
	
	Once we've completed handling a new server, we must reset the 'new_server'
	variable, so that if we need to retry a request we don't go through the
	whole process again.
	
	Also, added more error reporting for when a request must be retried.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror-kernel/src/dm-cmirror-client.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.27&r2=1.1.2.28

--- cluster/cmirror-kernel/src/Attic/dm-cmirror-client.c	2006/11/07 20:48:16	1.1.2.27
+++ cluster/cmirror-kernel/src/Attic/dm-cmirror-client.c	2006/11/27 22:36:48	1.1.2.28
@@ -406,6 +406,7 @@
 
 	if(len <= 0){
 		/* ATTENTION -- what do we do with this ? */
+		DMWARN("Error while listening for server response: %d", len);
 		error = len;
 		*retry = 1;
 		goto fail;
@@ -420,6 +421,8 @@
 	}
 
 	if (lr->u.lr_int_rtn == -ENXIO) {
+		DMDEBUG("Server (%u) says it no longer controls this log (%s)",
+			lc->server_id, lc->uuid + (strlen(lc->uuid) - 8));
 		lc->server_id = 0xDEAD;
 		*retry = 1;
 		goto fail;
@@ -540,6 +543,7 @@
 				      (type == LRT_SELECTION)? "LRT_SELECTION": "UNKNOWN"
 					);
 			}
+			new_server = 0;
 		}
 
 		rs = NULL;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]