diff --git a/documentation/drbd.conf.sgml b/documentation/drbd.conf.sgml
index b8c1282..c4b59af 100644
--- a/documentation/drbd.conf.sgml
+++ b/documentation/drbd.conf.sgml
@@ -247,7 +247,7 @@ resource r0 {
Optional parameters:
, ,
, ,
- .
+ , .
@@ -934,6 +934,13 @@ the unit is 1 second.
drbd.conflocal-io-error
+
+
+ DRBD detected a split brain situation. Manual recovery is necessary.
+ This handler should alert someone on duty.
+ drbd.confsplit-brain
+
+
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 6b5d180..e8aab71 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -2015,6 +2015,7 @@ STATIC drbd_conns_t drbd_sync_handshake(drbd_dev *mdev, drbd_role_t peer_role,
drbd_uuid_dump(mdev,"self",mdev->bc->md.uuid);
drbd_uuid_dump(mdev,"peer",mdev->p_uuid);
drbd_force_state(mdev,NS(conn,Disconnecting));
+ drbd_khelper(mdev,"split-brain");
return conn_mask;
}
diff --git a/scripts/drbd.conf b/scripts/drbd.conf
index a0f9d59..c5ecc54 100644
--- a/scripts/drbd.conf
+++ b/scripts/drbd.conf
@@ -148,6 +148,9 @@ resource r0 {
# The node is currently primary, but should become sync target
# after the negotiating phase. Alert someone about this incident.
#pri-lost "echo pri-lost. Have a look at the log files. | mail -s 'DRBD Alert' root";
+
+ # Notify someone in case DRBD split brained.
+ #split-brain "echo split-brain. drbdadm -- --discard-my-data connect $DRBD_RESOURCE ? | mail -s 'DRBD Alert' root";
}
startup {
diff --git a/user/drbdadm_main.c b/user/drbdadm_main.c
index 174ef5e..02cc8bf 100644
--- a/user/drbdadm_main.c
+++ b/user/drbdadm_main.c
@@ -239,6 +239,7 @@ struct adm_cmd cmds[] = {
{ "outdate-peer", adm_khelper, 3,1,0 },
{ "local-io-error", adm_khelper, 3,1,0 },
{ "pri-lost", adm_khelper, 3,1,0 },
+ { "split-brain", adm_khelper, 3,1,0 },
{ "set-gi", admm_generic, 4,1,0 },
{ "suspend-io", adm_generic_s, 4,1,0 },
{ "resume-io", adm_generic_s, 4,1,0 },
diff --git a/user/drbdadm_scanner.fl b/user/drbdadm_scanner.fl
index d023446..7bec521 100644
--- a/user/drbdadm_scanner.fl
+++ b/user/drbdadm_scanner.fl
@@ -92,7 +92,8 @@ become-primary-on { DP; CP; return TK_STARTUP_OPTION; }
wait-after-sb { DP; CP; return TK_STARTUP_SWITCH; }
pri-on-incon-degr { DP; CP; return TK_HANDLER_OPTION; }
pri-lost-after-sb { DP; CP; return TK_HANDLER_OPTION; }
-pri-lost { DP; CP; return TK_HANDLER_OPTION; }
+pri-lost { DP; CP; return TK_HANDLER_OPTION; }
+split-brain { DP; CP; return TK_HANDLER_OPTION; }
outdate-peer { DP; CP; return TK_HANDLER_OPTION; }
local-io-error { DP; CP; return TK_HANDLER_OPTION; }
{IPV4ADDR} { DP; CP; return TK_IPADDR; }