summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Spray <john.spray@redhat.com>2014-10-30 20:15:26 +0300
committerIlya Dryomov <idryomov@redhat.com>2014-12-17 20:09:51 +0300
commit7cfa0313d0dc52e4da9f196f8ad5bfdf266fc1fb (patch)
tree528faa6aa740a07deb3e0ecabc8202dc7a9c815d
parentd4e1a4e0db439209672f9803f9f23b0123fb09aa (diff)
downloadlinux-7cfa0313d0dc52e4da9f196f8ad5bfdf266fc1fb.tar.xz
ceph: message versioning fixes
There were two places we were assigning version in host byte order instead of network byte order. Also in MSG_CLIENT_SESSION we weren't setting compat_version in the header to reflect continued compatability with older MDSs. Fixes: http://tracker.ceph.com/issues/9945 Signed-off-by: John Spray <john.spray@redhat.com> Reviewed-by: Sage Weil <sage@redhat.com>
-rw-r--r--fs/ceph/mds_client.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 9f00853f6d42..387a48993d34 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -860,8 +860,11 @@ static struct ceph_msg *create_session_open_msg(struct ceph_mds_client *mdsc, u6
/*
* Serialize client metadata into waiting buffer space, using
* the format that userspace expects for map<string, string>
+ *
+ * ClientSession messages with metadata are v2
*/
- msg->hdr.version = 2; /* ClientSession messages with metadata are v2 */
+ msg->hdr.version = cpu_to_le16(2);
+ msg->hdr.compat_version = cpu_to_le16(1);
/* The write pointer, following the session_head structure */
p = msg->front.iov_base + sizeof(*h);
@@ -1872,7 +1875,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc,
goto out_free2;
}
- msg->hdr.version = 2;
+ msg->hdr.version = cpu_to_le16(2);
msg->hdr.tid = cpu_to_le64(req->r_tid);
head = msg->front.iov_base;