On 04/22/2013 01:43 PM, Alex Elder wrote:
On 04/22/2013 01:34 PM, Josh Durgin wrote:
+ * We need to zero anything beyond the parent overlap
+ * boundary. Since rbd_img_obj_request_read_callback()
+ * will zero anything beyond the end of a short read, an
+ * easy way to do this is to pretend the data from the
+ * parent came up short--ending at the overlap boundary.
+ */
Sorry, I missed this one.
+ rbd_assert(obj_request->img_offset < U64_MAX - obj_request->length);
+ obj_end = obj_request->img_offset + obj_request->length;
+ rbd_dev = obj_request->img_request->rbd_dev;
+ if (obj_end > rbd_dev->parent_overlap) {
Shouldn't this be >=, since the overlap is a size?
Does the overlap define the maximum byte offste included in
the overlap, or does it define the first offset not included?
If it's the former, then I agree with you (and it's not
what I thought).
It's the latter. Now I see that obj_end is the first offset not
included, so it's correct in your patch.
-Alex
+ u64 xferred = 0;
+
+ if (obj_request->img_offset < rbd_dev->parent_overlap)
+ xferred = rbd_dev->parent_overlap -
+ obj_request->img_offset;
+
+ obj_request->xferred = min(img_request->xferred, xferred);
+ } else {
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html