1. 20 1月, 2020 1 次提交
  2. 30 10月, 2019 1 次提交
  3. 12 9月, 2019 1 次提交
  4. 16 8月, 2019 3 次提交
  5. 15 8月, 2019 1 次提交
  6. 15 7月, 2019 1 次提交
    • P
      migration: Split log_clear() into smaller chunks · 002cad6b
      Peter Xu 提交于
      Currently we are doing log_clear() right after log_sync() which mostly
      keeps the old behavior when log_clear() was still part of log_sync().
      
      This patch tries to further optimize the migration log_clear() code
      path to split huge log_clear()s into smaller chunks.
      
      We do this by spliting the whole guest memory region into memory
      chunks, whose size is decided by MigrationState.clear_bitmap_shift (an
      example will be given below).  With that, we don't do the dirty bitmap
      clear operation on the remote node (e.g., KVM) when we fetch the dirty
      bitmap, instead we explicitly clear the dirty bitmap for the memory
      chunk for each of the first time we send a page in that chunk.
      
      Here comes an example.
      
      Assuming the guest has 64G memory, then before this patch the KVM
      ioctl KVM_CLEAR_DIRTY_LOG will be a single one covering 64G memory.
      If after the patch, let's assume when the clear bitmap shift is 18,
      then the memory chunk size on x86_64 will be 1UL<<18 * 4K = 1GB.  Then
      instead of sending a big 64G ioctl, we'll send 64 small ioctls, each
      of the ioctl will cover 1G of the guest memory.  For each of the 64
      small ioctls, we'll only send if any of the page in that small chunk
      was going to be sent right away.
      Signed-off-by: NPeter Xu <peterx@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Message-Id: <20190603065056.25211-12-peterx@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      002cad6b
  7. 12 6月, 2019 1 次提交
    • M
      Include qemu-common.h exactly where needed · a8d25326
      Markus Armbruster 提交于
      No header includes qemu-common.h after this commit, as prescribed by
      qemu-common.h's file comment.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <20190523143508.25387-5-armbru@redhat.com>
      [Rebased with conflicts resolved automatically, except for
      include/hw/arm/xlnx-zynqmp.h hw/arm/nrf51_soc.c hw/arm/msf2-soc.c
      block/qcow2-refcount.c block/qcow2-cluster.c block/qcow2-cache.c
      target/arm/cpu.h target/lm32/cpu.h target/m68k/cpu.h target/mips/cpu.h
      target/moxie/cpu.h target/nios2/cpu.h target/openrisc/cpu.h
      target/riscv/cpu.h target/tilegx/cpu.h target/tricore/cpu.h
      target/unicore32/cpu.h target/xtensa/cpu.h; bsd-user/main.c and
      net/tap-bsd.c fixed up]
      a8d25326
  8. 15 5月, 2019 1 次提交
  9. 02 4月, 2019 1 次提交
    • M
      Revert "migration: move only_migratable to MigrationState" · 811f8652
      Markus Armbruster 提交于
      This reverts commit 3df663e5.
      This reverts commit b605c47b.
      
      Command line option --only-migratable is for disallowing any
      configuration that can block migration.
      
      Initially, --only-migratable set global variable @only_migratable.
      
      Commit 3df663e5 "migration: move only_migratable to MigrationState"
      replaced it by MigrationState member @only_migratable.  That was a
      mistake.
      
      First, it doesn't make sense on the design level.  MigrationState
      captures the state of an individual migration, but --only-migratable
      isn't a property of an individual migration, it's a restriction on
      QEMU configuration.  With fault tolerance, we could have several
      migrations at once.  --only-migratable would certainly protect all of
      them.  Storing it in MigrationState feels inappropriate.
      
      Second, it contributes to a dependency cycle that manifests itself as
      a bug now.
      
      Putting @only_migratable into MigrationState means its available only
      after migration_object_init().
      
      We can't set it before migration_object_init(), so we delay setting it
      with a global property (this is fixup commit b605c47b "migration:
      fix handling for --only-migratable").
      
      We can't get it before migration_object_init(), so anything that uses
      it can only run afterwards.
      
      Since migrate_add_blocker() needs to obey --only-migratable, any code
      adding migration blockers can run only afterwards.  This contributes
      to the following dependency cycle:
      
      * configure_blockdev() must run before machine_set_property()
        so machine properties can refer to block backends
      
      * machine_set_property() before configure_accelerator()
        so machine properties like kvm-irqchip get applied
      
      * configure_accelerator() before migration_object_init()
        so that Xen's accelerator compat properties get applied.
      
      * migration_object_init() before configure_blockdev()
        so configure_blockdev() can add migration blockers
      
      The cycle was closed when recent commit cda4aa9a "Create block
      backends before setting machine properties" added the first
      dependency, and satisfied it by violating the last one.  Broke block
      backends that add migration blockers.
      
      Moving @only_migratable into MigrationState was a mistake.  Revert it.
      
      This doesn't quite break the "migration_object_init() before
      configure_blockdev() dependency, since migrate_add_blocker() still has
      another dependency on migration_object_init().  To be addressed the
      next commit.
      
      Note that the reverted commit made -only-migratable sugar for -global
      migration.only-migratable=on below the hood.  Documentation has only
      ever mentioned -only-migratable.  This commit removes the arcane &
      undocumented alternative to -only-migratable again.  Nobody should be
      using it.
      
      Conflicts:
      	include/migration/misc.h
      	migration/migration.c
      	migration/migration.h
      	vl.c
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <20190401090827.20793-3-armbru@redhat.com>
      Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
      811f8652
  10. 26 3月, 2019 1 次提交
  11. 06 3月, 2019 3 次提交
  12. 05 3月, 2019 1 次提交
  13. 23 1月, 2019 2 次提交
  14. 31 10月, 2018 1 次提交
  15. 22 8月, 2018 2 次提交
  16. 15 6月, 2018 2 次提交
  17. 04 6月, 2018 1 次提交
  18. 16 5月, 2018 10 次提交
  19. 26 4月, 2018 3 次提交
  20. 20 3月, 2018 2 次提交
  21. 14 3月, 2018 1 次提交