Skip to content
Commit 6e2a4505 authored by Alex Elder's avatar Alex Elder Committed by Sage Weil
Browse files

rbd: don't zero-fill non-image object requests

A result of ENOENT from a read request for an object that's part of
an rbd image indicates that there is a hole in that portion of the
image.  Similarly, a short read for such an object indicates that
the remainder of the read should be interpreted a full read with
zeros filling out the end of the request.

This behavior is not correct for objects that are not backing rbd
image data.  Currently rbd_img_obj_request_callback() assumes it
should be done for all objects.

Change rbd_img_obj_request_callback() so it only does this zeroing
for image objects.  Encapsulate that special handling in its own
function.  Add an assertion that the image object request is a bio
request, since we assume that (and we currently don't support any
other types).

This resolves a problem identified here:
    http://tracker.ceph.com/issues/4559

The regression was introduced by bf0d5f50

.

Reported-by: default avatarDan van der Ster <dan@vanderster.com>
Signed-off-by: default avatarAlex Elder <elder@inktank.com>
Reviewed-off-by: default avatarSage Weil <sage@inktank.com>
parent d6c0dd6b
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment