1. 26 10月, 2017 2 次提交
    • J
      qemu: Enabled pause-before-switchover migration capability · 32c29f10
      Jiri Denemark 提交于
      QEMU identified a race condition between the device state serialization
      and the end of storage migration. Both QEMU and libvirt needs to be
      updated to fix this.
      
      Our migration work flow is modified so that after starting the migration
      we to wait for QEMU to enter "pre-switchover", "postcopy-active", or
      "completed" state. Once there, we cancel all block jobs as usual. But if
      QEMU is in "pre-switchover", we need to resume the migration afterwards
      and wait again for the real end (either "postcopy-active" or
      "completed" state).
      
      Old QEMU will just enter either "postcopy-active" or "completed"
      directly, which is still correctly handled even by new libvirt. The
      "pre-switchover" state will only be entered if QEMU supports it and the
      pause-before-switchover capability was enabled. Thus all combinations of
      libvirt and QEMU will work, but only new QEMU with new libvirt will
      avoid the race condition.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      32c29f10
    • J
      qemu: Add pause-before-switchover migration capability · 6addde24
      Jiri Denemark 提交于
      This new capability enables a pause before device state serialization so
      that we can finish all block jobs without racing with the end of the
      migration. The pause is indicated by "pre-switchover" state. Once we're
      done QEMU enters "device" migration state.
      
      This patch just defines the new capability and QEMU migration states and
      their mapping to our job states.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      6addde24
  2. 23 10月, 2017 7 次提交
  3. 20 10月, 2017 1 次提交
  4. 19 10月, 2017 1 次提交
    • P
      qemu: send allowReboot in migration cookie · e859da6f
      Pavel Hrdina 提交于
      We need to send allowReboot in the migration cookie to ensure the same
      behavior of the virDomainSetLifecycleAction() API on the destination.
      
      Consider this scenario:
      
          1. On the source the domain is started with:
              <on_poweroff>destroy</on_poweroff>
              <on_reboot>restart</on_reboot>
              <on_crash>destroy</on_crash>
      
          2. User calls an API to set "destroy" for <on_reboot>:
              <on_poweroff>destroy</on_poweroff>
              <on_reboot>destroy</on_reboot>
              <on_crash>destroy</on_crash>
      
          3. The guest is migrated to a different host
      
          4a. Without the allowReboot in the migration cookie the QEMU
              process on destination would be started with -no-reboot
              which would prevent using the virDomainSetLifecycleAction() API
              for the rest of the guest lifetime.
      
          4b. With the allowReboot in the migration cookie the QEMU process
              on destination is started without -no-reboot like it was started
              on the source host and the virDomainSetLifecycleAction() API
              continues to work.
      
      The following patch adds a QEMU implementation of the
      virDomainSetLifecycleAction() API and that implementation disallows
      using the API if all actions are set to "destroy" because we add
      "-no-reboot" on the QEMU command line.  Changing the lifecycle action
      is in this case pointless because the QEMU process is always terminated.
      Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      e859da6f
  5. 17 10月, 2017 1 次提交
  6. 05 10月, 2017 2 次提交
  7. 25 9月, 2017 1 次提交
  8. 14 9月, 2017 1 次提交
  9. 07 9月, 2017 9 次提交
  10. 29 8月, 2017 1 次提交
  11. 18 8月, 2017 1 次提交
  12. 20 7月, 2017 1 次提交
  13. 19 7月, 2017 1 次提交
  14. 26 6月, 2017 1 次提交
  15. 14 6月, 2017 1 次提交
  16. 13 6月, 2017 1 次提交
  17. 07 6月, 2017 4 次提交
  18. 03 5月, 2017 1 次提交
    • J
      qemu: Fix persistent migration of transient domains · 59307fad
      Jiri Denemark 提交于
      While fixing a bug with incorrectly freed memory in commit
      v3.1.0-399-g5498aa29, I accidentally broke persistent migration of
      transient domains. Before adding qemuDomainDefCopy in the path, the code
      just took NULL from vm->newDef and used it as the persistent def, which
      resulted in no persistent XML being sent in the migration cookie. This
      scenario is perfectly valid and the destination correctly handles it by
      using the incoming live definition and storing it as the persistent one.
      
      After the mentioned commit libvirtd would just segfault in the described
      scenario.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1446205Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      59307fad
  19. 02 5月, 2017 1 次提交
  20. 27 4月, 2017 2 次提交