[DRBD-cvs] r1504 - trunk/drbd
svn at svn.drbd.org
svn at svn.drbd.org
Thu Aug 26 13:23:05 CEST 2004
Author: phil
Date: 2004-08-26 13:23:02 +0200 (Thu, 26 Aug 2004)
New Revision: 1504
Modified:
trunk/drbd/drbd_fs.c
Log:
Allow invalidate if cstate<Connected and Secondary
Modified: trunk/drbd/drbd_fs.c
===================================================================
--- trunk/drbd/drbd_fs.c 2004-08-25 14:38:07 UTC (rev 1503)
+++ trunk/drbd/drbd_fs.c 2004-08-26 11:23:02 UTC (rev 1504)
@@ -1152,19 +1152,22 @@
* differentiate between different error cases,
* or report the current connection state and flags back
* to userspace */
- if( mdev->cstate != Connected ||
+ if( mdev->cstate < StandAlone ||
+ mdev->cstate > Connected ||
test_bit(DISKLESS,&mdev->flags) ||
test_bit(PARTNER_DISKLESS,&mdev->flags) ) {
err = -EINPROGRESS;
break;
}
- /* avoid races with set_in_sync
- * for successfull mirrored writes
- */
- set_cstate(mdev,WFBitMapT);
- wait_event(mdev->cstate_wait,
- atomic_read(&mdev->ap_bio_cnt)==0);
+ if (mdev->cstate == Connected) {
+ /* avoid races with set_in_sync
+ * for successfull mirrored writes
+ */
+ set_cstate(mdev,WFBitMapT);
+ wait_event(mdev->cstate_wait,
+ atomic_read(&mdev->ap_bio_cnt)==0);
+ }
drbd_bm_lock(mdev); // racy...
@@ -1178,8 +1181,10 @@
drbd_md_clear_flag(mdev,MDF_FullSync);
drbd_md_write(mdev);
- drbd_send_short_cmd(mdev,BecomeSyncSource);
- drbd_start_resync(mdev,SyncTarget);
+ if (mdev->cstate == Connected) {
+ drbd_send_short_cmd(mdev,BecomeSyncSource);
+ drbd_start_resync(mdev,SyncTarget);
+ }
drbd_bm_unlock(mdev);
More information about the drbd-cvs
mailing list