aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph
diff options
context:
space:
mode:
authorYan, Zheng <zyan@redhat.com>2015-01-13 02:20:52 -0500
committerIlya Dryomov <idryomov@gmail.com>2015-02-19 05:31:39 -0500
commit1f041a89b4f22cf2e701514f4b8f73a8b1e06a3e (patch)
treeeb4f21b020338f22264a413ef39f47ec9c5ddb01 /fs/ceph
parentfcc02d2a03fc629b82d1ca1006fbd06570385264 (diff)
ceph: fix request time stamp encoding
struct timespec uses 'long' to present second and nanosecond. 'long' is 64 bits on 64bits machine. ceph MDS expects time stamp to be encoded as struct ceph_timespec, which uses 'u32' to present second and nanosecond. Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r--fs/ceph/mds_client.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index c90ca99331be..03720fe3f531 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1939,7 +1939,11 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc,
1939 head->num_releases = cpu_to_le16(releases); 1939 head->num_releases = cpu_to_le16(releases);
1940 1940
1941 /* time stamp */ 1941 /* time stamp */
1942 ceph_encode_copy(&p, &req->r_stamp, sizeof(req->r_stamp)); 1942 {
1943 struct ceph_timespec ts;
1944 ceph_encode_timespec(&ts, &req->r_stamp);
1945 ceph_encode_copy(&p, &ts, sizeof(ts));
1946 }
1943 1947
1944 BUG_ON(p > end); 1948 BUG_ON(p > end);
1945 msg->front.iov_len = p - msg->front.iov_base; 1949 msg->front.iov_len = p - msg->front.iov_base;
@@ -2028,7 +2032,11 @@ static int __prepare_send_request(struct ceph_mds_client *mdsc,
2028 2032
2029 /* time stamp */ 2033 /* time stamp */
2030 p = msg->front.iov_base + req->r_request_release_offset; 2034 p = msg->front.iov_base + req->r_request_release_offset;
2031 ceph_encode_copy(&p, &req->r_stamp, sizeof(req->r_stamp)); 2035 {
2036 struct ceph_timespec ts;
2037 ceph_encode_timespec(&ts, &req->r_stamp);
2038 ceph_encode_copy(&p, &ts, sizeof(ts));
2039 }
2032 2040
2033 msg->front.iov_len = p - msg->front.iov_base; 2041 msg->front.iov_len = p - msg->front.iov_base;
2034 msg->hdr.front_len = cpu_to_le32(msg->front.iov_len); 2042 msg->hdr.front_len = cpu_to_le32(msg->front.iov_len);