summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2017-07-14 16:08:54 +0200
committerIlya Dryomov <idryomov@gmail.com>2017-07-17 14:54:59 +0200
commit914902af4f271884968f72c4fa144c723be2a699 (patch)
tree88abf861e628a05a173783099227ab5517d95789
parentf5cc6898650210a90669437d2d9a3fd564ff7d88 (diff)
downloadlinux-stable-914902af4f271884968f72c4fa144c723be2a699.tar.gz
linux-stable-914902af4f271884968f72c4fa144c723be2a699.tar.bz2
linux-stable-914902af4f271884968f72c4fa144c723be2a699.zip
libceph: don't call encode_request_finish() on MOSDBackoff messages
encode_request_finish() is for MOSDOp messages. Calling it on MOSDBackoff ack-block messages corrupts them. Fixes: a02a946dfe96 ("libceph: respect RADOS_BACKOFF backoffs") Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
-rw-r--r--net/ceph/osd_client.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 86a9737d8e3f..901bb8221366 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -5310,7 +5310,10 @@ static int invalidate_authorizer(struct ceph_connection *con)
static void osd_reencode_message(struct ceph_msg *msg)
{
- encode_request_finish(msg);
+ int type = le16_to_cpu(msg->hdr.type);
+
+ if (type == CEPH_MSG_OSD_OP)
+ encode_request_finish(msg);
}
static int osd_sign_message(struct ceph_msg *msg)