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 <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
519b6d3eac
commit
e959d08d3e
|
@ -901,8 +901,6 @@ static int conn_connect(struct drbd_tconn *tconn)
|
|||
msock.rbuf = tconn->meta.rbuf;
|
||||
msock.socket = NULL;
|
||||
|
||||
clear_bit(DISCARD_CONCURRENT, &tconn->flags);
|
||||
|
||||
/* Assume that the peer only understands protocol 80 until we know better. */
|
||||
tconn->agreed_pro_version = 80;
|
||||
|
||||
|
@ -918,6 +916,7 @@ static int conn_connect(struct drbd_tconn *tconn)
|
|||
sock.socket = s;
|
||||
send_first_packet(tconn, &sock, P_INITIAL_DATA);
|
||||
} else if (!msock.socket) {
|
||||
clear_bit(DISCARD_CONCURRENT, &tconn->flags);
|
||||
msock.socket = s;
|
||||
send_first_packet(tconn, &msock, P_INITIAL_META);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue