[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 23:15:45

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

Log message:
	Bug 217438: scrolling kernel requests to mark mirror regions
	It is sometimes possible for a mark request to be issued on a region
	that is being recovered.  The mark must be delayed until the recovery
	is complete.  This is what was happening, but a rather severe error
	was being reported and the (mark region) retries were happening too


--- cluster/cmirror-kernel/src/Attic/dm-cmirror-client.c	2006/11/27 22:36:48
+++ cluster/cmirror-kernel/src/Attic/dm-cmirror-client.c	2006/11/27 23:15:43
@@ -941,9 +941,19 @@
 	while((error = consult_server(lc, region, LRT_MARK_REGION, NULL))){
+		if (error == -EBUSY) {
+			/* Remote recovering delay and try again */
+			DMDEBUG("Delaying mark to region %Lu, due to recovery",
+				region);
+			set_current_state(TASK_INTERRUPTIBLE);
+			schedule_timeout(HZ/2);
+			continue;
+		}
 		DMWARN("unable to get server (%u) to mark region (%Lu)",
 		       lc->server_id, region);
 		DMWARN("Reason :: %d", error);
 		if (error == -EIO) {
 			lc->log_dev_failed = 1;

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