Revision 0271b044

b/lib/constants.py
948 948
HV_MIGRATION_BANDWIDTH = "migration_bandwidth"
949 949
HV_MIGRATION_DOWNTIME = "migration_downtime"
950 950
HV_MIGRATION_MODE = "migration_mode"
951
HV_KVM_MIGRATION_CAPS = "migration_caps"
951 952
HV_USE_LOCALTIME = "use_localtime"
952 953
HV_DISK_CACHE = "disk_cache"
953 954
HV_SECURITY_MODEL = "security_model"
......
1021 1022
  HV_MIGRATION_BANDWIDTH: VTYPE_INT,
1022 1023
  HV_MIGRATION_DOWNTIME: VTYPE_INT,
1023 1024
  HV_MIGRATION_MODE: VTYPE_STRING,
1025
  HV_KVM_MIGRATION_CAPS: VTYPE_STRING,
1024 1026
  HV_USE_LOCALTIME: VTYPE_BOOL,
1025 1027
  HV_DISK_CACHE: VTYPE_STRING,
1026 1028
  HV_SECURITY_MODEL: VTYPE_STRING,
......
2124 2126
    HV_MIGRATION_BANDWIDTH: 32, # MiB/s
2125 2127
    HV_MIGRATION_DOWNTIME: 30,  # ms
2126 2128
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
2129
    HV_KVM_MIGRATION_CAPS: "",
2127 2130
    HV_USE_LOCALTIME: False,
2128 2131
    HV_DISK_CACHE: HT_CACHE_DEFAULT,
2129 2132
    HV_SECURITY_MODEL: HT_SM_NONE,
b/lib/hypervisor/hv_kvm.py
114 114
  constants.HOTPLUG_TARGET_DISK: lambda d, e: (d, e)
115 115
  }
116 116

  
117
_MIGRATION_CAPS_DELIM = ":"
118

  
117 119

  
118 120
def _GenerateDeviceKVMId(dev_type, dev, idx=None):
119 121
  """Helper function to generate a unique device name used by KVM
......
702 704
    constants.HV_MIGRATION_BANDWIDTH: hv_base.REQ_NONNEGATIVE_INT_CHECK,
703 705
    constants.HV_MIGRATION_DOWNTIME: hv_base.REQ_NONNEGATIVE_INT_CHECK,
704 706
    constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK,
707
    constants.HV_KVM_MIGRATION_CAPS: hv_base.NO_CHECK,
705 708
    constants.HV_USE_LOCALTIME: hv_base.NO_CHECK,
706 709
    constants.HV_DISK_CACHE:
707 710
      hv_base.ParamInSet(True, constants.HT_VALID_CACHE_TYPES),
......
2520 2523
                       instance.hvparams[constants.HV_MIGRATION_DOWNTIME])
2521 2524
    self._CallMonitorCommand(instance_name, migrate_command)
2522 2525

  
2526
    # These commands are supported in latest qemu versions.
2527
    # Since _CallMonitorCommand does not catch monitor errors
2528
    # this does not raise an exception in case command is not supported
2529
    # TODO: either parse output of command or see if the command supported
2530
    # via info help (see hotplug)
2531
    migration_caps = instance.hvparams[constants.HV_KVM_MIGRATION_CAPS]
2532
    if migration_caps:
2533
      for c in migration_caps.split(_MIGRATION_CAPS_DELIM):
2534
        migrate_command = ("migrate_set_capability %s on" % c)
2535
        self._CallMonitorCommand(instance_name, migrate_command)
2536

  
2523 2537
    migrate_command = "migrate -d tcp:%s:%s" % (target, port)
2524 2538
    self._CallMonitorCommand(instance_name, migrate_command)
2525 2539

  
b/man/gnt-instance.rst
762 762
    machine version (due to e.g. outdated drivers). In case it's not set
763 763
    the default version supported by your version of kvm is used.
764 764

  
765
migration\_caps
766
    Valid for the KVM hypervisor.
767

  
768
    Enable specific migration capabilities by providing a ":" separated
769
    list of supported capabilites. QEMU version 1.7.0 defines
770
    x-rdma-pin-all, auto-converge, zero-blocks, and xbzrle. Please note
771
    that while a combination of xbzrle and auto-converge might speed up
772
    the migration process significantly, the first may cause BSOD on
773
    Windows8r2 instances running on drbd.
774

  
765 775
kvm\_path
766 776
    Valid for the KVM hypervisor.
767 777

  

Also available in: Unified diff