summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-07-30 16:22:05 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-11-26 11:38:39 -0800
commited447f04ee3240371aa8a199588107fd521240d3 (patch)
treef43b55fc04fd8bf8bf1aca9b6db91818cc1de620
parenteea8ed97626254429d4679c567035effdf9983a8 (diff)
libceph: reset connection retry on successfully negotiation
(cherry picked from commit 85effe183dd45854d1ad1a370b88cddb403c4c91) We exponentially back off when we encounter connection errors. If several errors accumulate, we will eventually wait ages before even trying to reconnect. Fix this by resetting the backoff counter after a successful negotiation/ connection with the remote node. Fixes ceph issue #2802. Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Yehuda Sadeh <yehuda@inktank.com> Reviewed-by: Alex Elder <elder@inktank.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/ceph/messenger.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index b59e64a7b24b..9da18929c588 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -1629,6 +1629,8 @@ static int process_connect(struct ceph_connection *con)
if (con->in_reply.flags & CEPH_MSG_CONNECT_LOSSY)
set_bit(LOSSYTX, &con->flags);
+ con->delay = 0; /* reset backoff memory */
+
prepare_read_tag(con);
break;