diff --git a/0049-migration-Clear-fd-also-in-error-cases.patch b/0049-migration-Clear-fd-also-in-error-cases.patch new file mode 100644 index 0000000..22a88da --- /dev/null +++ b/0049-migration-Clear-fd-also-in-error-cases.patch @@ -0,0 +1,100 @@ +From a0591dc91ad795ffb47476b37730e46977a6be36 Mon Sep 17 00:00:00 2001 +From: Juan Quintela +Date: Tue, 9 Mar 2010 23:58:50 +0100 +Subject: [PATCH] migration: Clear fd also in error cases + +Not clearing the fd and closing the file makes qemu spin using 100%CPU +after incoming migration error. + +See for instance bug: +https://bugzilla.redhat.com/show_bug.cgi?id=518032 + +Signed-off-by: Juan Quintela +--- + migration-exec.c | 3 +-- + migration-fd.c | 3 +-- + migration-tcp.c | 5 ++--- + migration-unix.c | 5 ++--- + 4 files changed, 6 insertions(+), 10 deletions(-) + +diff --git a/migration-exec.c b/migration-exec.c +index 87f645b..e57a55d 100644 +--- a/migration-exec.c ++++ b/migration-exec.c +@@ -120,12 +120,11 @@ static void exec_accept_incoming_migration(void *opaque) + } + qemu_announce_self(); + dprintf("successfully loaded vm state\n"); +- /* we've successfully migrated, close the fd */ +- qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL); + if (autostart) + vm_start(); + + err: ++ qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL); + qemu_fclose(f); + } + +diff --git a/migration-fd.c b/migration-fd.c +index ef7edbc..7325d13 100644 +--- a/migration-fd.c ++++ b/migration-fd.c +@@ -113,12 +113,11 @@ static void fd_accept_incoming_migration(void *opaque) + } + qemu_announce_self(); + dprintf("successfully loaded vm state\n"); +- /* we've successfully migrated, close the fd */ +- qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL); + if (autostart) + vm_start(); + + err: ++ qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL); + qemu_fclose(f); + } + +diff --git a/migration-tcp.c b/migration-tcp.c +index 2cfa8cb..c328e73 100644 +--- a/migration-tcp.c ++++ b/migration-tcp.c +@@ -170,15 +170,14 @@ static void tcp_accept_incoming_migration(void *opaque) + qemu_announce_self(); + dprintf("successfully loaded vm state\n"); + +- /* we've successfully migrated, close the server socket */ +- qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL); +- close(s); + if (autostart) + vm_start(); + + out_fopen: + qemu_fclose(f); + out: ++ qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL); ++ close(s); + close(c); + } + +diff --git a/migration-unix.c b/migration-unix.c +index a141dbb..9685c4b 100644 +--- a/migration-unix.c ++++ b/migration-unix.c +@@ -176,13 +176,12 @@ static void unix_accept_incoming_migration(void *opaque) + qemu_announce_self(); + dprintf("successfully loaded vm state\n"); + +- /* we've successfully migrated, close the server socket */ +- qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL); +- close(s); + + out_fopen: + qemu_fclose(f); + out: ++ qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL); ++ close(s); + close(c); + } + +-- +1.6.6.1 + diff --git a/qemu.spec b/qemu.spec index 301cccb..5b24dc2 100644 --- a/qemu.spec +++ b/qemu.spec @@ -1,7 +1,7 @@ Summary: QEMU is a FAST! processor emulator Name: qemu Version: 0.12.3 -Release: 2%{?dist} +Release: 3%{?dist} # Epoch because we pushed a qemu-1.0 package Epoch: 2 License: GPLv2+ and LGPLv2+ and BSD @@ -82,6 +82,7 @@ Patch45: 0045-pc-Add-a-Fedora-13-machine-type-that-contains-backpo.patch Patch46: 0046-pc-Add-backward-compatibility-options-for-virtio-ser.patch Patch47: 0047-virtio-serial-don-t-set-MULTIPORT-for-1-port-dev.patch Patch48: 0048-virtio-serial-pci-Allow-MSI-to-be-disabled.patch +Patch49: 0049-migration-Clear-fd-also-in-error-cases.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -322,6 +323,7 @@ such as kvmtrace and kvm_stat. %patch46 -p1 %patch47 -p1 %patch48 -p1 +%patch49 -p1 %build # By default we build everything, but allow x86 to build a minimal version @@ -624,6 +626,9 @@ fi %{_mandir}/man1/qemu-img.1* %changelog +* Wed Mar 10 2010 Justin M. Forbes - 2:0.12.3-3 +- Migration clear the fd in error cases (#518032) + * Tue Mar 09 2010 Justin M. Forbes - 2:0.12.3-2 - Allow builds --with x86only - Add libaio-devel buildreq for aio support