});
}
- # and add used,owned/non-shared disks (just to be sure we have all)
+ # and add used, owned/non-shared disks (just to be sure we have all)
- PVE::QemuServer::foreach_drive($conf, sub {
- my ($ds, $drive) = @_;
+ PVE::QemuServer::foreach_volid($conf, sub {
+ my ($volid, $is_cdrom) = @_;
- my $volid = $drive->{file};
return if !$volid;
die "cant migrate local file/device '$volid'\n" if $volid =~ m|^/|;
- if (PVE::QemuServer::drive_is_cdrom($drive)) {
+ if ($is_cdrom) {
die "cant migrate local cdrom drive\n" if $volid eq 'cdrom';
return if $volid eq 'none';
$cdromhash->{$volid} = 1;
my $start = time();
+ # load_defaults
+ my $defaults = PVE::QemuServer::load_defaults();
+
+ # always set migrate speed (overwrite kvm default of 32m)
+ # we set a very hight default of 8192m which is basically unlimited
+ my $migrate_speed = $defaults->{migrate_speed} || 8192;
+ $migrate_speed = $conf->{migrate_speed} || $migrate_speed;
+ $migrate_speed = $migrate_speed * 1048576;
+ $self->log('info', "migrate_set_speed: $migrate_speed");
+ eval {
+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_speed", value => int($migrate_speed));
+ };
+ $self->log('info', "migrate_set_speed error: $@") if $@;
+
+ my $migrate_downtime = $defaults->{migrate_downtime};
+ $migrate_downtime = $conf->{migrate_downtime} if defined($conf->{migrate_downtime});
+ if (defined($migrate_downtime)) {
+ $self->log('info', "migrate_set_downtime: $migrate_downtime");
+ eval {
+ PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate_set_downtime", value => int($migrate_downtime));
+ };
+ $self->log('info', "migrate_set_downtime error: $@") if $@;
+ }
+
my $capabilities = {};
$capabilities->{capability} = "xbzrle";
$capabilities->{state} = JSON::false;