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

Reply via email to