summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_state.c
diff options
context:
space:
mode:
authorPhilipp Reisner2011-07-15 18:44:26 +0200
committerPhilipp Reisner2012-11-08 16:57:57 +0100
commit3fb4746d8d3f9c3e48f7fc65ed24bc54bb8032aa (patch)
tree33b36532b3ae99ea01b31f4a845d554049150791 /drivers/block/drbd/drbd_state.c
parentdrbd: Dropped wrong clause to generate new current UUIDs (diff)
downloadkernel-qcow2-linux-3fb4746d8d3f9c3e48f7fc65ed24bc54bb8032aa.tar.gz
kernel-qcow2-linux-3fb4746d8d3f9c3e48f7fc65ed24bc54bb8032aa.tar.xz
kernel-qcow2-linux-3fb4746d8d3f9c3e48f7fc65ed24bc54bb8032aa.zip
drbd: Consider that the no-data-condition could be in connected state
...when the peer has inconsistent data. In that case we failed to clear the susp_nod flag. When the local disk was attached again Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_state.c')
-rw-r--r--drivers/block/drbd/drbd_state.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_state.c b/drivers/block/drbd/drbd_state.c
index 1763357a065a..60371ba90fb1 100644
--- a/drivers/block/drbd/drbd_state.c
+++ b/drivers/block/drbd/drbd_state.c
@@ -1180,7 +1180,8 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os,
if (os.conn < C_CONNECTED && conn_lowest_conn(mdev->tconn) >= C_CONNECTED)
what = RESEND;
- if (os.disk == D_ATTACHING && conn_lowest_disk(mdev->tconn) > D_ATTACHING)
+ if ((os.disk == D_ATTACHING || os.disk == D_NEGOTIATING) &&
+ conn_lowest_disk(mdev->tconn) > D_NEGOTIATING)
what = RESTART_FROZEN_DISK_IO;
if (what != NOTHING) {