[DRBD-cvs] r1922 - branches/drbd-0.7/drbd

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Thu Aug 25 10:54:22 CEST 2005


Author: lars
Date: 2005-08-25 10:54:21 +0200 (Thu, 25 Aug 2005)
New Revision: 1922

Modified:
   branches/drbd-0.7/drbd/drbd_actlog.c
   branches/drbd-0.7/drbd/drbd_fs.c
   branches/drbd-0.7/drbd/drbd_receiver.c
Log:

 * balance module count in case a diskless secondary loses connection
 * quieten drbd_md_sync_page_io
 * clean receiver exit after "no good data anymore" panic



Modified: branches/drbd-0.7/drbd/drbd_actlog.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_actlog.c	2005-08-24 15:32:17 UTC (rev 1921)
+++ branches/drbd-0.7/drbd/drbd_actlog.c	2005-08-25 08:54:21 UTC (rev 1922)
@@ -98,6 +98,7 @@
 	D_ASSERT(semaphore_is_locked(&mdev->md_io_mutex));
 
 	if (!mdev->md_bdev) {
+		if (test_bit(DISKLESS,&mdev->flags)) return 0;
 		if (DRBD_ratelimit(5*HZ,5)) {
 			ERR("mdev->md_bdev==NULL\n");
 			dump_stack();

Modified: branches/drbd-0.7/drbd/drbd_fs.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_fs.c	2005-08-24 15:32:17 UTC (rev 1921)
+++ branches/drbd-0.7/drbd/drbd_fs.c	2005-08-25 08:54:21 UTC (rev 1922)
@@ -1209,7 +1209,8 @@
 		if (test_bit(DISKLESS,&mdev->flags)) {
 			set_cstate(mdev,Unconfigured);
 			drbd_mdev_cleanup(mdev);
-			module_put(THIS_MODULE);
+			/* was done in disconnect already.
+			 * module_put(THIS_MODULE); */
 		} else set_cstate(mdev,StandAlone);
 
 		break;

Modified: branches/drbd-0.7/drbd/drbd_receiver.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_receiver.c	2005-08-24 15:32:17 UTC (rev 1921)
+++ branches/drbd-0.7/drbd/drbd_receiver.c	2005-08-25 08:54:21 UTC (rev 1922)
@@ -1895,7 +1895,9 @@
 	if ( mdev->state == Primary &&
 	    ( test_bit(DISKLESS,&mdev->flags)
 	    || !drbd_md_test_flag(mdev,MDF_Consistent) ) ) {
+		drbd_thread_stop_nowait(&mdev->receiver);
 		drbd_panic("Sorry, I have no access to good data anymore.\n");
+		return;
 	}
 
 	if (get_t_state(&mdev->receiver) == Exiting) {
@@ -1903,6 +1905,7 @@
 			// Secondary
 			set_cstate(mdev,Unconfigured);
 			drbd_mdev_cleanup(mdev);
+			module_put(THIS_MODULE);
 		} else {
 			set_cstate(mdev,StandAlone);
 			drbd_thread_start(&mdev->worker);



More information about the drbd-cvs mailing list