[DRBD-cvs] svn commit by phil - r2304 - trunk/drbd - Fixed some
bugs, related to "drbdad down [res]"
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Fri Jul 28 09:38:45 CEST 2006
Author: phil
Date: 2006-07-28 09:38:43 +0200 (Fri, 28 Jul 2006)
New Revision: 2304
Modified:
trunk/drbd/drbd_fs.c
trunk/drbd/drbd_main.c
Log:
Fixed some bugs, related to "drbdad down [res]"
Modified: trunk/drbd/drbd_fs.c
===================================================================
--- trunk/drbd/drbd_fs.c 2006-07-27 14:06:49 UTC (rev 2303)
+++ trunk/drbd/drbd_fs.c 2006-07-28 07:38:43 UTC (rev 2304)
@@ -1157,6 +1157,8 @@
mdev->cram_hmac_tfm = NULL;
}
+ drbd_md_sync(mdev);
+
return 0;
}
Modified: trunk/drbd/drbd_main.c
===================================================================
--- trunk/drbd/drbd_main.c 2006-07-27 14:06:49 UTC (rev 2303)
+++ trunk/drbd/drbd_main.c 2006-07-28 07:38:43 UTC (rev 2304)
@@ -550,7 +550,7 @@
rv = _drbd_set_state(mdev, ns, f);
ns = mdev->state;
spin_unlock_irqrestore(&mdev->req_lock,flags);
- if (rv == SS_Success) after_state_ch(mdev,os,ns,f);
+ if (rv==SS_Success && !(f&ScheduleAfter)) after_state_ch(mdev,os,ns,f);
return rv;
}
@@ -639,7 +639,7 @@
ns = mdev->state;
spin_unlock_irqrestore(&mdev->req_lock,flags);
- if (rv == SS_Success) after_state_ch(mdev,os,ns,f);
+ if (rv==SS_Success && !(f&ScheduleAfter)) after_state_ch(mdev,os,ns,f);
return rv;
}
@@ -750,6 +750,12 @@
ns.pdsk = os.pdsk;
}
+ /* Dissalow Network errors to configure a device's network part */
+ if( (ns.conn >= BrokenPipe && ns.conn <= NetworkFailure ) &&
+ os.conn == StandAlone ) {
+ ns.conn = os.conn;
+ }
+
if( ns.i == os.i ) return SS_NothingToDo;
fp = DontCare;
@@ -1077,6 +1083,10 @@
lc_free(mdev->act_log); mdev->act_log = NULL;
}
+ if ( os.conn != StandAlone && ns.conn == StandAlone ) {
+ drbd_thread_stop(&mdev->receiver);
+ }
+
if ( os.conn != Unconnected && ns.conn == Unconnected ) {
drbd_thread_stop(&mdev->receiver);
drbd_thread_start(&mdev->receiver);
@@ -2606,12 +2616,13 @@
if (!test_and_clear_bit(MD_DIRTY,&mdev->flags)) return;
del_timer(&mdev->md_sync_timer);
- INFO("Writing meta data super block now.\n");
// We use here Failed and not Attaching because we try to write
// metadata even if we detach due to a disk failure!
- ERR_IF(!inc_md_only(mdev,Failed)) return;
+ if(!inc_md_only(mdev,Failed)) return;
+ INFO("Writing meta data super block now.\n");
+
down(&mdev->md_io_mutex);
buffer = (struct meta_data_on_disk *)page_address(mdev->md_io_page);
memset(buffer,0,512);
More information about the drbd-cvs
mailing list