[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