1. 22 11月, 2017 1 次提交
    • D
      migration/ram.c: do not set 'postcopy_running' in POSTCOPY_INCOMING_END · acab30b8
      Daniel Henrique Barboza 提交于
      When migrating a VM with 'migrate_set_capability postcopy-ram on'
      a postcopy_state is set during the process, ending up with the
      state POSTCOPY_INCOMING_END when the migration is over. This
      postcopy_state is taken into account inside ram_load to check
      how it will load the memory pages. This same ram_load is called when
      in a loadvm command.
      
      Inside ram_load, the logic to see if we're at postcopy_running state
      is:
      
      postcopy_running = postcopy_state_get() >= POSTCOPY_INCOMING_LISTENING
      
      postcopy_state_get() returns this enum type:
      
      typedef enum {
          POSTCOPY_INCOMING_NONE = 0,
          POSTCOPY_INCOMING_ADVISE,
          POSTCOPY_INCOMING_DISCARD,
          POSTCOPY_INCOMING_LISTENING,
          POSTCOPY_INCOMING_RUNNING,
          POSTCOPY_INCOMING_END
      } PostcopyState;
      
      In the case where ram_load is executed and postcopy_state is
      POSTCOPY_INCOMING_END, postcopy_running will be set to 'true' and
      ram_load will behave like a postcopy is in progress. This scenario isn't
      achievable in a migration but it is reproducible when executing
      savevm/loadvm after migrating with 'postcopy-ram on', causing loadvm
      to fail with Error -22:
      
      Source:
      
      (qemu) migrate_set_capability postcopy-ram on
      (qemu) migrate tcp:127.0.0.1:4444
      
      Dest:
      
      (qemu) migrate_set_capability postcopy-ram on
      (qemu)
      ubuntu1704-intel login:
      Ubuntu 17.04 ubuntu1704-intel ttyS0
      
      ubuntu1704-intel login: (qemu)
      (qemu) savevm test1
      (qemu) loadvm test1
      Unknown combination of migration flags: 0x4 (postcopy mode)
      error while loading state for instance 0x0 of device 'ram'
      Error -22 while loading VM state
      (qemu)
      
      This patch fixes this problem by changing the existing logic for
      postcopy_advised and postcopy_running in ram_load, making them
      'false' if we're at POSTCOPY_INCOMING_END state.
      Signed-off-by: NDaniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
      CC: Juan Quintela <quintela@redhat.com>
      CC: Dr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NPeter Xu <peterx@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reported-by: NBalamuruhan S <bala24@linux.vnet.ibm.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      acab30b8
  2. 29 10月, 2017 3 次提交
  3. 24 10月, 2017 8 次提交
  4. 27 9月, 2017 1 次提交
  5. 22 9月, 2017 3 次提交
  6. 02 8月, 2017 1 次提交
  7. 11 7月, 2017 4 次提交
  8. 14 6月, 2017 3 次提交
  9. 13 6月, 2017 2 次提交
  10. 07 6月, 2017 4 次提交
  11. 02 6月, 2017 2 次提交
  12. 31 5月, 2017 4 次提交
  13. 19 5月, 2017 4 次提交