From: Ilya Dryomov Date: Fri, 14 Jul 2017 14:08:54 +0000 (+0200) Subject: libceph: don't call encode_request_finish() on MOSDBackoff messages X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=914902af4f271884968f72c4fa144c723be2a699;p=linux.git 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 --- diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index 86a9737d8e3ff..901bb82213662 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)