On Tue, Dec 30, 2014 at 01:04:16PM +0300, Vladimir Sementsov-Ogievskiy wrote: > Because of wrong return value of .save_live_pending() in > migration/block.c, migration finishes before the whole disk is > transferred. Such situation occurs when the migration process is fast > enough, for example when source and dest are on the same host. > > If in the bulk phase we return something < max_size, we will skip > transferring the tail of the device. Currently we have "set pending to > BLOCK_SIZE if it is zero" for bulk phase, but there no guarantee, that > it will be < max_size. > > True approach is to return, for example, max_size+1 when we are in the > bulk phase. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@parallels.com> > --- > migration/block.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-)
Yikes, this is a nasty bug. CCing qemu-stable. Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
pgpDcFIaBF5zQ.pgp
Description: PGP signature