[DRBD-cvs] r1790 - in trunk: . drbd
www-data
www-data at garcon.linbit.com
Mon May 9 23:36:46 CEST 2005
Author: phil
Date: 2005-05-09 23:36:44 +0200 (Mon, 09 May 2005)
New Revision: 1790
Modified:
trunk/ROADMAP
trunk/drbd/drbd_fs.c
trunk/drbd/drbd_main.c
trunk/drbd/drbd_receiver.c
Log:
Fixed a bit of the "split-brain-fix" behaviour.
- An even more strict mode of operation would be possible.
- Now every thing works when I "disconnect" the peer.
Need to test what happens when the peer is "down"ed.
Modified: trunk/ROADMAP
===================================================================
--- trunk/ROADMAP 2005-05-09 08:13:38 UTC (rev 1789)
+++ trunk/ROADMAP 2005-05-09 21:36:44 UTC (rev 1790)
@@ -41,7 +41,9 @@
discard-less-modified
Auto sync from is the node that did more modifications
discard-NODENAME
- Auto sync to the named node
+ Auto sync to the named node
+ discard-current-secondary
+ Auto sync from current primary (What if there is no primary?)
pri-sees-sec-with-newer-data =
disconnect (current behaviour)
Modified: trunk/drbd/drbd_fs.c
===================================================================
--- trunk/drbd/drbd_fs.c 2005-05-09 08:13:38 UTC (rev 1789)
+++ trunk/drbd/drbd_fs.c 2005-05-09 21:36:44 UTC (rev 1790)
@@ -711,8 +711,8 @@
case 4: /* peer is outdated */
nps = Outdated;
break;
- case 5: /* peer was down, increase GENCNT ... */
- drbd_uuid_new_current(mdev);
+ case 5: /* peer was down, we will(have) create(d) a new UUID anyways... */
+ /* If we would be more strict, we would return DUnknown here. */
nps = Outdated;
break;
case 6: /* Peer is primary, voluntarily outdate myself */
@@ -721,11 +721,13 @@
break;
default:
/* The script is broken ... */
- drbd_uuid_new_current(mdev);
nps = DUnknown;
- ERR("outdate-peer helper returned %d (%d)\n",(r>>8)&0xff,r);
+ drbd_request_state(mdev,NS(disk,Outdated));
+ ERR("outdate-peer helper broken, returned %d \n",(r>>8)&0xff);
+ return nps;
}
+ INFO("outdate-peer helper returned %d \n",(r>>8)&0xff);
return nps;
}
Modified: trunk/drbd/drbd_main.c
===================================================================
--- trunk/drbd/drbd_main.c 2005-05-09 08:13:38 UTC (rev 1789)
+++ trunk/drbd/drbd_main.c 2005-05-09 21:36:44 UTC (rev 1790)
@@ -648,6 +648,7 @@
}
#if DUMP_MD >= 2
+ char *pbp,pb[300];
pbp = pb;
PSC(role);
PSC(peer);
Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c 2005-05-09 08:13:38 UTC (rev 1789)
+++ trunk/drbd/drbd_receiver.c 2005-05-09 21:36:44 UTC (rev 1790)
@@ -1883,11 +1883,19 @@
}
if ( mdev->state.s.role == Primary ) {
+ if ( mdev->state.s.pdsk >= DUnknown &&
+ mdev->uuid[Bitmap] == 0 ) {
+ /* We only create a new UUID if the peer might
+ possibly be UpToDate. Since the connection is
+ already gone it is DUnknown by now.
+ In case we already created a BitMap there is
+ no need to create a new UUID.
+ */
+ drbd_uuid_new_current(mdev);
+ }
if ( test_bit(SPLIT_BRAIN_FIX,&mdev->flags) ) {
drbd_disks_t nps = drbd_try_outdate_peer(mdev);
drbd_request_state(mdev,NS(pdsk,nps));
- } else {
- drbd_uuid_new_current(mdev);
}
drbd_md_write(mdev);
}
More information about the drbd-cvs
mailing list