[DRBD-cvs] drbd by phil; random odds and ends. Nothing worth to m...

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Wed, 18 Feb 2004 16:42:38 +0100 (CET)


DRBD CVS committal

Author  : phil
Module  : drbd

Dir     : drbd/drbd


Modified Files:
      Tag: rel-0_7-branch
	drbd_dsender.c drbd_main.c drbd_receiver.c drbd_req-2.4.c 


Log Message:
random odds and ends. Nothing worth to mention.

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.77
retrieving revision 1.1.2.78
diff -u -3 -r1.1.2.77 -r1.1.2.78
--- drbd_dsender.c	18 Feb 2004 12:21:17 -0000	1.1.2.77
+++ drbd_dsender.c	18 Feb 2004 15:42:32 -0000	1.1.2.78
@@ -168,13 +168,15 @@
 
 	if (!uptodate) {
 		// for the panic:
-		drbd_chk_io_error(mdev,!uptodate);
+		drbd_chk_io_error(mdev,!uptodate); // handle panic and detach.
+		if(mdev->on_io_error == PassOn) goto pass_on;
 		// ok, if we survived this, retry:
 		// FIXME sector ...
 		ERR("local read failed, retrying remotely\n");
 		req->w.cb = w_read_retry_remote;
 		drbd_queue_work(mdev,&mdev->data.work,&req->w);
 	} else {
+	pass_on:
 		bh->b_end_io(req->master_bio,uptodate);
 
 		INVALIDATE_MAGIC(req);
@@ -321,14 +323,15 @@
 	PARANOIA_BUG_ON(!VALID_POINTER(req));
 
 	if (error) {
-		// for the panic:
-		drbd_chk_io_error(mdev,error);
+		drbd_chk_io_error(mdev,error); // handle panic and detach.
+		if(mdev->on_io_error == PassOn) goto pass_on;
 		// ok, if we survived this, retry:
 		// FIXME sector ...
 		ERR("local read failed, retrying remotely\n");
 		req->w.cb = w_read_retry_remote;
 		drbd_queue_work(mdev,&mdev->data.work,&req->w);
 	} else {
+	pass_on:
 		bio_endio(req->master_bio,req->master_bio->bi_size,error);
 
 		INVALIDATE_MAGIC(req);
@@ -346,15 +349,10 @@
 
 	if ( mdev->cstate <= Connected ||
 	     test_bit(PARTNER_DISKLESS,&mdev->flags) ) {
-
-		// FIXME
-		// local read failed, and we cannot retry.
-		// drbd_chk_io_error has already been called.
-		// what now: PANIC ??
-
-		// propagate, cannot do anything about it.
+		ERR("WE ARE LOST. Local IO failure, no peer.\n");
 		drbd_bio_endio(req->master_bio,0);
-		return 0; // worker will abort.
+		// TODO: Do something like panic() or shut_down_cluster().
+		return 1;
 	}
 
 	// FIXME: what if partner was SyncTarget, and is out of sync for
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.132
retrieving revision 1.73.2.133
diff -u -3 -r1.73.2.132 -r1.73.2.133
--- drbd_main.c	18 Feb 2004 12:21:18 -0000	1.73.2.132
+++ drbd_main.c	18 Feb 2004 15:42:32 -0000	1.73.2.133
@@ -1416,7 +1416,6 @@
 	register_ioctl32_conversion(DRBD_IOCTL_GET_VERSION,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_INVALIDATE,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_INVALIDATE_REM,NULL);
-	register_ioctl32_conversion(DRBD_IOCTL_SECONDARY_REM,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_SET_DISK_CONFIG,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_SET_DISK_SIZE,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_SET_NET_CONFIG,NULL);
@@ -1489,7 +1488,6 @@
 	unregister_ioctl32_conversion(DRBD_IOCTL_GET_VERSION);
 	unregister_ioctl32_conversion(DRBD_IOCTL_INVALIDATE);
 	unregister_ioctl32_conversion(DRBD_IOCTL_INVALIDATE_REM);
-	unregister_ioctl32_conversion(DRBD_IOCTL_SECONDARY_REM);
 	unregister_ioctl32_conversion(DRBD_IOCTL_SET_DISK_CONFIG);
 	unregister_ioctl32_conversion(DRBD_IOCTL_SET_DISK_SIZE);
 	unregister_ioctl32_conversion(DRBD_IOCTL_SET_NET_CONFIG);
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.112
retrieving revision 1.97.2.113
diff -u -3 -r1.97.2.112 -r1.97.2.113
--- drbd_receiver.c	16 Feb 2004 20:39:00 -0000	1.97.2.112
+++ drbd_receiver.c	18 Feb 2004 15:42:32 -0000	1.97.2.113
@@ -1700,7 +1700,7 @@
 	spin_unlock(&mdev->pr_lock);
 
 	ERR("Get NegDReply. WE ARE LOST. We lost our up-to-date disk.\n");
-	// TODO: Do simething like panic() or shut_down_cluster(). 
+	// TODO: Do something like panic() or shut_down_cluster(). 
 	return TRUE;
 }
 
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_req-2.4.c,v
retrieving revision 1.33.2.56
retrieving revision 1.33.2.57
diff -u -3 -r1.33.2.56 -r1.33.2.57
--- drbd_req-2.4.c	18 Feb 2004 12:21:18 -0000	1.33.2.56
+++ drbd_req-2.4.c	18 Feb 2004 15:42:32 -0000	1.33.2.57
@@ -275,31 +275,6 @@
 			 */
 			drbd_send_dblock(mdev,req);
 		} else if (target_area_out_of_sync) {
-			#if 0
-			/* lge: I do not like this branch,
-			 * and it currently does not work anyways...
-			 */
-			spin_lock(&mdev->pr_lock);
-			pr=drbd_find_read(sector,&mdev->resync_reads);
-			if(pr) {
-				INFO("Upgraded a resync read\n");
-
-				pr->cause |= Application;
-				inc_ap_pending(mdev);
-				pr->d.master_bio=bio;
-				list_del(&pr->w.list);
-				list_add(&pr->w.list,&mdev->app_reads);
-				spin_unlock(&mdev->pr_lock);
-				/* Ok, everything arranged.
-				 * since reads are never done
-				 * on both nodes at the same time,
-				 * we just:
-				 */
-				// up_read(mdev->device_lock);
-				return 0;
-			}
-			spin_unlock(&mdev->pr_lock);
-			#endif
 			drbd_read_remote(mdev,req);
 		} else {
 			// this node is diskless ...