On 04/22/2013 01:34 PM, Josh Durgin wrote:
> Alex Elder <[email protected]> wrote:
>
>> (This patch is available in branch "review/wip-overlap" of
>> the ceph-client git repository.)
>>
>>
>>
>> A clone image has a defined overlap point with its parent image.
>> That is the byte offset beyond which the parent image has no
>> defined data to back the clone, and anything thereafter can be
>> viewed as being zero-filled by the clone image.
. . .
>> @@ -2166,6 +2166,16 @@ static int rbd_img_obj_parent_read_full(struct
>> rbd_obj_request *obj_request)
>> length = (u64)1 << rbd_dev->header.obj_order;
>>
>> /*
>> + * There is no defined parent data beyond the parent
>> + * overlap, so limit what we read at that boundary if
>> + * necessary.
>> + */
>> + if (img_offset + length > rbd_dev->parent_overlap) {
>> + rbd_assert(img_offset < rbd_dev->parent_overlap);
>> + length = obj_request->offset - obj_request->img_offset;
>
> This doesn't look right. I think we want the length to be
> rbd_dev->parent_overlap - img_offset.
You are correct. I'm glad you spotted that.
The assertion above it was right, I must have forgotten
to fix the actual assignment.
Is that the only problem you see? I can repost, but if
I agree to fix it as you describe, is that sufficient?
-Alex
>> + }
>> +
>> + /*
>> * Allocate a page array big enough to receive the data read
>> * from the parent.
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html