Am 22.10.2014 um 17:00 hat Max Reitz geschrieben: > Patch 2: > The bdrv_is_allocated() functions may return a number of zero sectors > e.g. if a sector beyond the image end has been queried. Respect this > case in qemu-io's map implementation so it doesn't run into an infinite > loop (https://bugs.launchpad.net/qemu/+bug/1356969). > > Patch 1: > In that bug report, bdrv_co_get_block_status() fell through to the > underlying file to get additional information (whether the sectors are > zeroed). However, the offset reported by the image format (qcow2) was > beyond the size of the underlying file and so this second query returned > only zero clusters which replaced the actual number of sectors queried > in the "formatted" (on qcow2 level) image. This replacement is generally > fine because it allows bdrv_co_get_block_status() to follow the > granularity (holes and non-holes) of the underlying file, but not if > only zero clusters could be queried (which indicates a request beyond > the image end). > This patch makes bdrv_co_get_block_status() respect the underlying > file's EOF and act accordingly. > > Patch 3 adds a test for patch 1; a test which depends on patch 2 is > included in v3 of my series "raw-posix: Fix raw_co_get_block_status()".
Thanks, applied to the block branch. Kevin