Commit ccca4e37 authored by Yan, Zheng's avatar Yan, Zheng Committed by Sage Weil
Browse files

libceph: fix truncate size calculation



check the "not truncated yet" case

Signed-off-by: default avatarYan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: default avatarSage Weil <sage@inktank.com>
parent eb845ff1
Loading
Loading
Loading
Loading
+8 −6
Original line number Original line Diff line number Diff line
@@ -733,6 +733,7 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,


	object_size = le32_to_cpu(layout->fl_object_size);
	object_size = le32_to_cpu(layout->fl_object_size);
	object_base = off - objoff;
	object_base = off - objoff;
	if (!(truncate_seq == 1 && truncate_size == -1ULL)) {
		if (truncate_size <= object_base) {
		if (truncate_size <= object_base) {
			truncate_size = 0;
			truncate_size = 0;
		} else {
		} else {
@@ -740,6 +741,7 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
			if (truncate_size > object_size)
			if (truncate_size > object_size)
				truncate_size = object_size;
				truncate_size = object_size;
		}
		}
	}


	osd_req_op_extent_init(req, 0, opcode, objoff, objlen,
	osd_req_op_extent_init(req, 0, opcode, objoff, objlen,
				truncate_size, truncate_seq);
				truncate_size, truncate_seq);