diff options
author | Jim Schutt <jaschut@sandia.gov> | 2011-09-16 08:27:31 -0600 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2011-09-16 09:16:22 -0700 |
commit | c0d5f9db1c7d1b8a9e2f217706e8ea233bac2754 (patch) | |
tree | 1962a9bbd284e32a70486b8cc5a0babd2c7dc131 /net | |
parent | aca420bc51f48b0701963ba3a6234442a0cabebd (diff) |
libceph: initialize ack_stamp to avoid unnecessary connection reset
Commit 4cf9d544631c recorded when an outgoing ceph message was ACKed,
in order to avoid unnecessary connection resets when an OSD is busy.
However, ack_stamp is uninitialized, so there is a window between
when the message is sent and when it is ACKed in which handle_timeout()
interprets the unitialized value as an expired timeout, and resets
the connection unnecessarily.
Close the window by initializing ack_stamp.
Signed-off-by: Jim Schutt <jaschut@sandia.gov>
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ceph/messenger.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index c340e2e0765b..9918e9eb276e 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -2307,6 +2307,7 @@ struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags) m->front_max = front_len; m->front_is_vmalloc = false; m->more_to_follow = false; + m->ack_stamp = 0; m->pool = NULL; /* middle */ |