Revision 6e2a4505dba0cae8faa701426185dfb7b49f537c authored by Alex Elder on 27 March 2013, 14:16:30 UTC, committed by Sage Weil on 29 March 2013, 18:32:07 UTC
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 bf0d5f503dc11d6314c0503591d258d60ee9c944.

Reported-by: Dan van der Ster <dan@vanderster.com>
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-off-by: Sage Weil <sage@inktank.com>
1 parent d6c0dd6
History
File Mode Size
interface
acpi.h -rw-r--r-- 2.1 KB
balloon.h -rw-r--r-- 1.1 KB
events.h -rw-r--r-- 3.6 KB
features.h -rw-r--r-- 463 bytes
gntalloc.h -rw-r--r-- 2.6 KB
gntdev.h -rw-r--r-- 5.6 KB
grant_table.h -rw-r--r-- 7.0 KB
hvc-console.h -rw-r--r-- 479 bytes
hvm.h -rw-r--r-- 1.3 KB
page.h -rw-r--r-- 347 bytes
platform_pci.h -rw-r--r-- 1.5 KB
swiotlb-xen.h -rw-r--r-- 1.8 KB
tmem.h -rw-r--r-- 155 bytes
xen-ops.h -rw-r--r-- 1.1 KB
xen.h -rw-r--r-- 871 bytes
xenbus.h -rw-r--r-- 7.7 KB
xenbus_dev.h -rw-r--r-- 1.8 KB
xencomm.h -rw-r--r-- 2.5 KB

back to top