1. 15 3月, 2012 2 次提交
    • L
      qapi: Convert migrate · e1c37d0e
      Luiz Capitulino 提交于
      The migrate command is one of those commands where HMP and QMP completely
      mix up together. This made the conversion to the QAPI (which separates the
      command into QMP and HMP parts) a bit difficult.
      
      The first important change to be noticed is that this commit completes the
      removal of the Monitor object from migration code, started by the previous
      commit.
      
      Another important and tricky change is about supporting the non-detached
      mode. That is, if the user doesn't pass '-d' the migrate command will lock
      the monitor and will only release it when migration is finished.
      
      To support this in the new HMP command (hmp_migrate()), it is necessary
      to create a timer which runs every second and checks if the migration is
      still active. If it is, the timer callback will re-schedule itself to run
      one second in the future. If the migration has already finished, the
      monitor lock is released and the user can use it normally.
      
      All these changes should be transparent to the user.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      e1c37d0e
    • L
      Purge migration of (almost) everything to do with monitors · 539de124
      Luiz Capitulino 提交于
      The Monitor object is passed back and forth within the migration/savevm
      code so that it can print errors and progress to the user.
      
      However, that approach assumes a HMP monitor, being completely invalid
      in QMP.
      
      This commit drops almost every single usage of the Monitor object, all
      monitor_printf() calls have been converted into DPRINTF() ones.
      
      There are a few remaining Monitor objects, those are going to be dropped
      by the next commit.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      539de124
  2. 17 2月, 2012 1 次提交
  3. 14 1月, 2012 1 次提交
  4. 13 12月, 2011 1 次提交
  5. 06 12月, 2011 3 次提交
  6. 22 11月, 2011 2 次提交
    • A
      block: allow migration to work with image files (v3) · 0f15423c
      Anthony Liguori 提交于
      Image files have two types of data: immutable data that describes things like
      image size, backing files, etc. and mutable data that includes offset and
      reference count tables.
      
      Today, image formats aggressively cache mutable data to improve performance.  In
      some cases, this happens before a guest even starts.  When dealing with live
      migration, since a file is open on two machines, the caching of meta data can
      lead to data corruption.
      
      This patch addresses this by introducing a mechanism to invalidate any cached
      mutable data a block driver may have which is then used by the live migration
      code.
      
      NB, this still requires coherent shared storage.  Addressing migration without
      coherent shared storage (i.e. NFS) requires additional work.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      0f15423c
    • A
      migrate: add migration blockers · fa2756b7
      Anthony Liguori 提交于
      This lets different subsystems register an Error that is thrown whenever
      migration is attempted.  This works nicely because it gracefully supports
      things like hotplug.
      
      Right now, if multiple errors are registered, only one of them is reported.
      I expect that for 1.1, we'll extend query-migrate to return all of the reasons
      why migration is disabled at any given point in time.
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      fa2756b7
  7. 12 11月, 2011 1 次提交
  8. 02 11月, 2011 1 次提交
    • L
      Fix segfault on migration completion · 1fdc11c3
      Luiz Capitulino 提交于
      A simple migration reproduces it:
      
      1. Start the source VM with:
      
         # qemu [...] -S
      
      2. Start the destination VM with:
      
         # qemu <source VM cmd-line> -incoming tcp:0:4444
      
      3. In the source VM:
      
         (qemu) migrate -d tcp:0:4444
      
      4. The source VM will segfault as soon as migration completes (might not
         happen in the first try)
      
      What is happening here is that qemu_file_put_notify() can end up closing
      's->file' (in which case it's also set to NULL). The call stack is rather
      complex, but Eduardo helped tracking it to:
      
      select loop -> migrate_fd_put_notify() -> qemu_file_put_notify() ->
      buffered_put_buffer() -> migrate_fd_put_ready() ->
      migrate_fd_completed() -> migrate_fd_cleanup().
      
      To be honest, it's not completely clear to me in which cases 's->file'
      is not closed (on error maybe)? But I doubt this fix will make anything
      worse.
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Acked-by: NEduardo Habkost <ehabkost@redhat.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      1fdc11c3
  9. 27 10月, 2011 1 次提交
  10. 25 10月, 2011 1 次提交
  11. 20 10月, 2011 26 次提交