mirror: Fix qiov size for short requests
commit5a0f6fd5c84573387056e0464a7fc0c6fb70b2dc
authorKevin Wolf <kwolf@redhat.com>
Tue, 1 Jul 2014 14:52:21 +0000 (1 16:52 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Mon, 7 Jul 2014 07:15:29 +0000 (7 09:15 +0200)
tree21b36dcf76f149c0bc3272c2a571ee0825db6647
parentbc3a7f90ff44037bbe898708081db23a08fa7189
mirror: Fix qiov size for short requests

When mirroring an image of a size that is not a multiple of the
mirror job granularity, the last request would have the right nb_sectors
argument, but a qiov that is rounded up to the next multiple of the
granularity. Don't do this.

This fixes a segfault that is caused by raw-posix being confused by this
and allocating a buffer with request length, but operating on it with
qiov length.

[s/Driver/Drive/ in qemu-iotests 041 as suggested by Eric
--Stefan]

Reported-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Tested-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/mirror.c
tests/qemu-iotests/041
tests/qemu-iotests/041.out