diff mbox

[V2] spapr: Fix stale HTAB during live migration

Message ID 1408334916-14292-1-git-send-email-sam.mj@au1.ibm.com
State New
Headers show

Commit Message

Sam Mendoza-Jonas Aug. 18, 2014, 4:08 a.m. UTC
If a guest reboots during a running migration, changes to the
hash page table are not necessarily updated on the destination.
Opening a new file descriptor to the HTAB forces the migration
handler to resend the entire table.

Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
---
Changes in v2: Forgot check on kvmppc_get_htab_fd return value
 hw/ppc/spapr.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
diff mbox

Patch

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 3a6d26d..94670db 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -997,6 +997,16 @@  static void spapr_reset_htab(sPAPREnvironment *spapr)
         /* Kernel handles htab, we don't need to allocate one */
         spapr->htab_shift = shift;
         kvmppc_kern_htab = true;
+
+        /* Make sure readers are aware of the reset */
+        if (spapr->htab_fd > 0) {
+            close(spapr->htab_fd);
+            spapr->htab_fd = kvmppc_get_htab_fd(false);
+            if (spapr->htab_fd < 0) {
+                fprintf(stderr, "Unable to open fd for reading hash table from KVM: %s\n",
+                        strerror(errno));
+            }
+        }
     } else {
         if (!spapr->htab) {
             /* Allocate an htab if we don't yet have one */