From 19d3255ae36b2344e12a3e2608c64f43a386aabf Mon Sep 17 00:00:00 2001 From: Philipp Reisner Date: Wed, 1 Aug 2012 14:53:39 +0200 Subject: [PATCH] --- yaml --- r: 346230 b: refs/heads/master c: 80c6eed49d5da3ba97cff4dc316ff051486cd1fc h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/block/drbd/drbd_receiver.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 19978177c171..2b97c803ef12 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 92f14951c044198306f098e76c56a944cf88867a +refs/heads/master: 80c6eed49d5da3ba97cff4dc316ff051486cd1fc diff --git a/trunk/drivers/block/drbd/drbd_receiver.c b/trunk/drivers/block/drbd/drbd_receiver.c index 1567e9bb9bde..26c30fd64ecf 100644 --- a/trunk/drivers/block/drbd/drbd_receiver.c +++ b/trunk/drivers/block/drbd/drbd_receiver.c @@ -949,20 +949,25 @@ static int conn_connect(struct drbd_tconn *tconn) if (sock.socket) { conn_warn(tconn, "initial packet S crossed\n"); sock_release(sock.socket); + sock.socket = s; + goto randomize; } sock.socket = s; break; case P_INITIAL_META: + set_bit(DISCARD_CONCURRENT, &tconn->flags); if (msock.socket) { conn_warn(tconn, "initial packet M crossed\n"); sock_release(msock.socket); + msock.socket = s; + goto randomize; } msock.socket = s; - set_bit(DISCARD_CONCURRENT, &tconn->flags); break; default: conn_warn(tconn, "Error receiving initial packet\n"); sock_release(s); +randomize: if (random32() & 1) goto retry; }