Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f041a89 authored by Yan, Zheng's avatar Yan, Zheng Committed by Ilya Dryomov
Browse files

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: default avatarYan, Zheng <zyan@redhat.com>
parent fcc02d2a
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -1939,7 +1939,11 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc,
	head->num_releases = cpu_to_le16(releases);

	/* time stamp */
	ceph_encode_copy(&p, &req->r_stamp, sizeof(req->r_stamp));
	{
		struct ceph_timespec ts;
		ceph_encode_timespec(&ts, &req->r_stamp);
		ceph_encode_copy(&p, &ts, sizeof(ts));
	}

	BUG_ON(p > end);
	msg->front.iov_len = p - msg->front.iov_base;
@@ -2028,7 +2032,11 @@ static int __prepare_send_request(struct ceph_mds_client *mdsc,

		/* time stamp */
		p = msg->front.iov_base + req->r_request_release_offset;
		ceph_encode_copy(&p, &req->r_stamp, sizeof(req->r_stamp));
		{
			struct ceph_timespec ts;
			ceph_encode_timespec(&ts, &req->r_stamp);
			ceph_encode_copy(&p, &ts, sizeof(ts));
		}

		msg->front.iov_len = p - msg->front.iov_base;
		msg->hdr.front_len = cpu_to_le32(msg->front.iov_len);