From b1acd1afc1d9ecde85a3547eef2abeacfe7caa35 Mon Sep 17 00:00:00 2001 From: "Danilo C. L. de Paula" Date: Fri, 15 Mar 2019 00:25:00 +0000 Subject: [PATCH] * Fri Mar 15 2019 Danilo Cesar Lemes de Paula - 3.1.0-19.el8 - kvm-migration-Fix-cancel-state.patch [bz#1608649] - kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch [bz#1608649] - Resolves: bz#1608649 (Query-migrate get "failed" status after migrate-cancel) --- kvm-migration-Fix-cancel-state.patch | 75 +++++++++++++++++++ ...dma-Fix-qemu_rdma_cleanup-null-check.patch | 54 +++++++++++++ qemu-kvm.spec | 12 ++- 3 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 kvm-migration-Fix-cancel-state.patch create mode 100644 kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch diff --git a/kvm-migration-Fix-cancel-state.patch b/kvm-migration-Fix-cancel-state.patch new file mode 100644 index 0000000..618acba --- /dev/null +++ b/kvm-migration-Fix-cancel-state.patch @@ -0,0 +1,75 @@ +From 31566a415b69d58fdf09f05e362685fcc3aee00b Mon Sep 17 00:00:00 2001 +From: "Dr. David Alan Gilbert" +Date: Thu, 7 Mar 2019 12:26:21 +0000 +Subject: [PATCH 1/2] migration: Fix cancel state + +RH-Author: Dr. David Alan Gilbert +Message-id: <20190307122622.9387-2-dgilbert@redhat.com> +Patchwork-id: 84820 +O-Subject: [RHEL-8.0 qemu-kvm AV PATCH 1/2] migration: Fix cancel state +Bugzilla: 1608649 +RH-Acked-by: Laurent Vivier +RH-Acked-by: Peter Xu +RH-Acked-by: Pankaj Gupta + +From: "Dr. David Alan Gilbert" + +During a cancelled migration there's a race where the fd can +go into an error state before we get back around the migration loop +and migration_detect_error transitions from cancelling->failed. + +Check for cancelled/cancelling and don't change the state. + +Red Hat bug: https://bugzilla.redhat.com/show_bug.cgi?id=1608649 + +Fixes: b23c2ade250 +Signed-off-by: Dr. David Alan Gilbert +Message-Id: <20190219195928.12289-1-dgilbert@redhat.com> +Signed-off-by: Dr. David Alan Gilbert +Reviewed-by: Peter Xu +Reviewed-by: Juan Quintela +(cherry picked from commit c3c5eae6ac69d9f7d4618407aa6c8ac5edc2267c) +Signed-off-by: Danilo C. L. de Paula +--- + migration/migration.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/migration/migration.c b/migration/migration.c +index 0d9cb7a..ecdf01d 100644 +--- a/migration/migration.c ++++ b/migration/migration.c +@@ -2824,6 +2824,13 @@ static MigThrError postcopy_pause(MigrationState *s) + static MigThrError migration_detect_error(MigrationState *s) + { + int ret; ++ int state = s->state; ++ ++ if (state == MIGRATION_STATUS_CANCELLING || ++ state == MIGRATION_STATUS_CANCELLED) { ++ /* End the migration, but don't set the state to failed */ ++ return MIG_THR_ERR_FATAL; ++ } + + /* Try to detect any file errors */ + ret = qemu_file_get_error(s->to_dst_file); +@@ -2833,7 +2840,7 @@ static MigThrError migration_detect_error(MigrationState *s) + return MIG_THR_ERR_NONE; + } + +- if (s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE && ret == -EIO) { ++ if (state == MIGRATION_STATUS_POSTCOPY_ACTIVE && ret == -EIO) { + /* + * For postcopy, we allow the network to be down for a + * while. After that, it can be continued by a +@@ -2845,7 +2852,7 @@ static MigThrError migration_detect_error(MigrationState *s) + * For precopy (or postcopy with error outside IO), we fail + * with no time. + */ +- migrate_set_state(&s->state, s->state, MIGRATION_STATUS_FAILED); ++ migrate_set_state(&s->state, state, MIGRATION_STATUS_FAILED); + trace_migration_thread_file_err(); + + /* Time to stop the migration, now. */ +-- +1.8.3.1 + diff --git a/kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch b/kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch new file mode 100644 index 0000000..8f99d0e --- /dev/null +++ b/kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch @@ -0,0 +1,54 @@ +From aa5367b5e81cdc3cc3dc8dbc31daef6acecc1f97 Mon Sep 17 00:00:00 2001 +From: "Dr. David Alan Gilbert" +Date: Thu, 7 Mar 2019 12:26:22 +0000 +Subject: [PATCH 2/2] migration/rdma: Fix qemu_rdma_cleanup null check +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Dr. David Alan Gilbert +Message-id: <20190307122622.9387-3-dgilbert@redhat.com> +Patchwork-id: 84819 +O-Subject: [RHEL-8.0 qemu-kvm AV PATCH 2/2] migration/rdma: Fix qemu_rdma_cleanup null check +Bugzilla: 1608649 +RH-Acked-by: Laurent Vivier +RH-Acked-by: Peter Xu +RH-Acked-by: Pankaj Gupta + +From: "Dr. David Alan Gilbert" + +If the migration fails before the channel is open (e.g. a bad +address) we end up in the cleanup with rdma->channel==NULL. + +Spotted by Coverity: CID 1398634 +Fixes: fbbaacab2758cb3f32a0 +Signed-off-by: Dr. David Alan Gilbert +Message-Id: <20190214185351.5927-1-dgilbert@redhat.com> +Signed-off-by: Dr. David Alan Gilbert +Reviewed-by: Peter Xu +Reviewed-by: Philippe Mathieu-Daudé +(cherry picked from commit cf75e2684938413f0bbe95f5a4b7db5c845e42c8) + +Signed-off-by: Danilo C. L. de Paula +--- + migration/rdma.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/migration/rdma.c b/migration/rdma.c +index 54a3c11..9fa3b17 100644 +--- a/migration/rdma.c ++++ b/migration/rdma.c +@@ -2321,7 +2321,9 @@ static void qemu_rdma_cleanup(RDMAContext *rdma) + rdma->connected = false; + } + +- qemu_set_fd_handler(rdma->channel->fd, NULL, NULL, NULL); ++ if (rdma->channel) { ++ qemu_set_fd_handler(rdma->channel->fd, NULL, NULL, NULL); ++ } + g_free(rdma->dest_blocks); + rdma->dest_blocks = NULL; + +-- +1.8.3.1 + diff --git a/qemu-kvm.spec b/qemu-kvm.spec index 5a43298..ebb0766 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -68,7 +68,7 @@ Obsoletes: %1-rhev Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm Version: 3.1.0 -Release: 18%{?dist} +Release: 19%{?dist} # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped Epoch: 15 License: GPLv2 and GPLv2+ and CC-BY @@ -216,6 +216,10 @@ Patch64: kvm-i386-remove-the-new-CPUID-PCONFIG-from-Icelake-Serve.patch Patch65: kvm-i386-remove-the-INTEL_PT-CPUID-bit-from-named-CPU-mo.patch # For bz#1661515 - Remove PCONFIG and INTEL_PT from Icelake-* CPU models Patch66: kvm-Revert-i386-Add-CPUID-bit-for-PCONFIG.patch +# For bz#1608649 - Query-migrate get "failed" status after migrate-cancel +Patch67: kvm-migration-Fix-cancel-state.patch +# For bz#1608649 - Query-migrate get "failed" status after migrate-cancel +Patch68: kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch BuildRequires: zlib-devel BuildRequires: glib2-devel @@ -1108,6 +1112,12 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %changelog +* Fri Mar 15 2019 Danilo Cesar Lemes de Paula - 3.1.0-19.el8 +- kvm-migration-Fix-cancel-state.patch [bz#1608649] +- kvm-migration-rdma-Fix-qemu_rdma_cleanup-null-check.patch [bz#1608649] +- Resolves: bz#1608649 + (Query-migrate get "failed" status after migrate-cancel) + * Tue Feb 26 2019 Danilo Cesar Lemes de Paula - 3.1.0-18.el8 - kvm-target-i386-Disable-MPX-support-on-named-CPU-models.patch [bz#1661030] - kvm-i386-remove-the-new-CPUID-PCONFIG-from-Icelake-Serve.patch [bz#1661515]