raw_co_get_block_status() should return 0 and set *pnum to 0 after the EOF; currently it does this merely by accident, so implement it directly. Also, nb_sectors should be clamped against the image end.
While doing that, centralize the generation of raw_co_get_block_status()'s return value along the way. v4: - Patch 1: Use DIV_ROUND_UP() for the range until the image end instead of truncating integer division [Eric] - Patch 3: - Use qemu-img resize -f raw instrad of truncate [Eric] - Use qemu with HMP qemu-io instead of qemu-io itself; drop the qemu-img test [Eric] git-backport-diff against v3: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/3:[0002] [FC] 'raw-posix: Fix raw_co_get_block_status() after EOF' 002/3:[----] [-C] 'raw-posix: raw_co_get_block_status() return value' 003/3:[0021] [FC] 'iotests: Add test for external image truncation' Max Reitz (3): raw-posix: Fix raw_co_get_block_status() after EOF raw-posix: raw_co_get_block_status() return value iotests: Add test for external image truncation block/raw-posix.c | 42 ++++++++++++++++++++++++------------------ tests/qemu-iotests/102 | 21 +++++++++++++++++++-- tests/qemu-iotests/102.out | 11 +++++++++++ 3 files changed, 54 insertions(+), 20 deletions(-) -- 1.9.3