On Mon, Nov 14, 2016 at 07:34:59PM +0100, Juan Quintela wrote: > Thomas Huth <th...@redhat.com> wrote: > > qemu_savevm_state_iterate() expects the iterators to return 1 > > when they are done, and 0 if there is still something left to do. > > However, ram_save_iterate() does not obey this rule and returns > > the number of saved pages instead. This causes a fatal hang with > > ppc64 guests when you run QEMU like this (also works with TCG): > > > > qemu-img create -f qcow2 /tmp/test.qcow2 1M > > qemu-system-ppc64 -nographic -nodefaults -m 256 \ > > -hda /tmp/test.qcow2 -serial mon:stdio > > > > ... then switch to the monitor by pressing CTRL-a c and try to > > save a snapshot with "savevm test1" for example. > > > > After the first iteration, ram_save_iterate() always returns 0 here, > > so that qemu_savevm_state_iterate() hangs in an endless loop and you > > can only "kill -9" the QEMU process. > > Fix it by using proper return values in ram_save_iterate(). > > > > Signed-off-by: Thomas Huth <th...@redhat.com> > > Reviewed-by: Juan Quintela <quint...@redhat.com> > > Applied. > > I don't know how we broked this so much.
Note that block save iterate has the same bug... -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature