From c12a3d8c84a5e9913a97ca5e6513c913a7e5b288 Mon Sep 17 00:00:00 2001 From: Philipp Reisner Date: Fri, 3 Aug 2012 15:14:04 +0200 Subject: [PATCH] drbd: Fix a potential issue with the DISCARD_CONCURRENT flag The DISCARD_CONCURRENT flag should be set on one node and cleared on the other node. As the code was before it was theoretical possible that a node accepts the meta socket, but has to close it later on, and keeps the DISCARD_CONCURRENT flag. Correct this by moving the clear_bit(DISCARD_CONCURRENT) where the packet gets sent. Signed-off-by: Philipp Reisner Signed-off-by: Lars Ellenberg Signed-off-by: Jens Axboe --- drivers/block/drbd/drbd_receiver.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 280735da1963..55c359a1a052 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -763,8 +763,6 @@ static int drbd_connect(struct drbd_conf *mdev) if (drbd_request_state(mdev, NS(conn, C_WF_CONNECTION)) < SS_SUCCESS) return -2; - clear_bit(DISCARD_CONCURRENT, &mdev->flags); - sock = NULL; msock = NULL; @@ -784,6 +782,7 @@ static int drbd_connect(struct drbd_conf *mdev) sock = s; s = NULL; } else if (!msock) { + clear_bit(DISCARD_CONCURRENT, &mdev->flags); drbd_send_fp(mdev, s, P_HAND_SHAKE_M); msock = s; s = NULL; -- 2.34.1