From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55050) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y5tfG-0003Ja-A8 for qemu-devel@nongnu.org; Tue, 30 Dec 2014 05:04:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y5tf9-0002Wv-LI for qemu-devel@nongnu.org; Tue, 30 Dec 2014 05:04:34 -0500 Received: from mailhub.sw.ru ([195.214.232.25]:12733 helo=relay.sw.ru) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y5tf8-0002VB-P8 for qemu-devel@nongnu.org; Tue, 30 Dec 2014 05:04:27 -0500 From: Vladimir Sementsov-Ogievskiy Date: Tue, 30 Dec 2014 13:04:15 +0300 Message-Id: <1419933856-4018-1-git-send-email-vsementsov@parallels.com> Subject: [Qemu-devel] [PATCH v2 0/1] Fix block migration bug List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: amit.shah@redhat.com, den@openvz.org, vsementsov@parallels.com, quintela@redhat.com v2: - rebase to master - fix typos in description Because of wrong return value of .save_live_pending() in block-migration, 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. It's easy to test this with the following: bug.sh ===================================================================== #!/bin/sh size=$1 addr=$2 rm /tmp/fifo-mig /tmp/a /tmp/b /tmp/sock-mig ./qemu-img create -f qcow2 /tmp/a $size ./qemu-img create -f qcow2 /tmp/b $size ./qemu-io -c "write -P 0x22 $addr 512" /tmp/a mkfifo /tmp/fifo-mig ./x86_64-softmmu/qemu-system-x86_64 -drive file=/tmp/b,id=disk\ -qmp unix:/tmp/sock-mig,server,nowait\ -incoming "exec: cat /tmp/fifo-mig" & echo 'migrate -b exec:cat>/tmp/fifo-mig\nquit\n' |\ ./x86_64-softmmu/qemu-system-x86_64 -drive file=/tmp/a,id=disk\ -monitor stdio ./scripts/qmp/qmp --path=/tmp/sock-mig quit sleep 3 echo checking ./qemu-io -c "read -P 0x22 $addr 512" /tmp/b ===================================================================== For './bug.sh 1G 1M' qemu-io check finishes successfully, but for './bug.sh 1G 1022M' it finishes with 'Pattern verification failed' status. The following patch fixes this bug. Vladimir Sementsov-Ogievskiy (1): migration/block: fix pending() return value migration/block.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 1.9.1