Kevin Wolf b0ddcbbb36 block: Fix copy-on-read crash with partial final cluster
If the virtual disk size isn't aligned to full clusters,
bdrv_co_do_copy_on_readv() may get pnum == 0 before having the full
cluster completed, which will let it run into an assertion failure:

qemu-io: block/io.c:1203: bdrv_co_do_copy_on_readv: Assertion `skip_bytes < pnum' failed.

Check for EOF, assert that we read at least as much as the read request
originally wanted to have (which is true at EOF because otherwise
bdrv_check_byte_request() would already have returned an error) and
return success early even though we couldn't copy the full cluster.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2018-07-10 10:36:15 +02:00
..
2018-02-22 15:44:07 -08:00
2018-03-21 15:13:40 +01:00
2018-06-21 09:21:19 -05:00
2018-06-04 10:15:16 +01:00
2018-03-06 14:01:27 +01:00
2018-06-01 15:13:46 +02:00
2018-02-08 09:22:03 +08:00
2018-07-05 11:25:14 +01:00
2018-07-05 11:25:14 +01:00