my $other_errors = [];
my $abort = 0;
- my $sharedvm = 1;
-
my $log_error = sub {
my ($msg, $volid) = @_;
# check if storage is available on target node
PVE::Storage::storage_check_node($self->{storecfg}, $targetsid, $self->{node});
- $sharedvm = 0; # there is a non-shared disk
PVE::Storage::foreach_volid($dl, sub {
my ($volid, $sid, $volname) = @_;
return if $scfg->{shared};
- $sharedvm = 0;
-
$local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot';
if ($attr->{cdrom}) {
foreach my $target_drive (keys %{$self->{target_drive}}) {
- my $drive = PVE::QemuServer::parse_drive($target_drive, $self->{target_drive}->{$target_drive}->{volid});
+ my $drive = PVE::QemuServer::parse_drive($target_drive, $self->{target_drive}->{$target_drive}->{drivestr});
my ($storeid, $volname) = PVE::Storage::parse_volume_id($drive->{file});
my $cmd = [@{$self->{rem_ssh}}, 'pvesm', 'free', "$storeid:$volname"];
$spice_port = int($1);
}
elsif ($line =~ m/^storage migration listens on nbd:(localhost|[\d\.]+|\[[\d\.:a-fA-F]+\]):(\d+):exportname=(\S+) volume:(\S+)$/) {
- my $volid = $4;
+ my $drivestr = $4;
my $nbd_uri = "nbd:$1:$2:exportname=$3";
my $targetdrive = $3;
$targetdrive =~ s/drive-//g;
- $self->{target_drive}->{$targetdrive}->{volid} = $volid;
+ $self->{target_drive}->{$targetdrive}->{drivestr} = $drivestr;
$self->{target_drive}->{$targetdrive}->{nbd_uri} = $nbd_uri;
+ } elsif ($line =~ m/^QEMU: (.*)$/) {
+ $self->log('info', "[$self->{node}] $1\n");
}
}, errfunc => sub {
my $line = shift;
- $self->log('info', $line);
+ $self->log('info', "[$self->{node}] $line");
}, noerr => 1);
die "remote command failed with exit code $exitcode\n" if $exitcode;
foreach my $drive (keys %{$self->{target_drive}}){
my $target = $self->{target_drive}->{$drive};
my $nbd_uri = $target->{nbd_uri};
- my $source_sid = PVE::Storage::Plugin::parse_volume_id($conf->{$drive});
- my $target_sid = PVE::Storage::Plugin::parse_volume_id($target->{volid});
+
+ my $source_drive = PVE::QemuServer::parse_drive($drive, $conf->{$drive});
+ my $target_drive = PVE::QemuServer::parse_drive($drive, $target->{drivestr});
+
+ my $source_sid = PVE::Storage::Plugin::parse_volume_id($source_drive->{file});
+ my $target_sid = PVE::Storage::Plugin::parse_volume_id($target_drive->{file});
+
my $bwlimit = PVE::Storage::get_bandwidth_limit('migrate', [$source_sid, $target_sid], $opt_bwlimit);
$self->log('info', "$drive: start migration to $nbd_uri");
die "Failed to complete storage migration: $err\n";
} else {
foreach my $target_drive (keys %{$self->{target_drive}}) {
- my $drive = PVE::QemuServer::parse_drive($target_drive, $self->{target_drive}->{$target_drive}->{volid});
+ my $drive = PVE::QemuServer::parse_drive($target_drive, $self->{target_drive}->{$target_drive}->{drivestr});
$conf->{$target_drive} = PVE::QemuServer::print_drive($drive);
PVE::QemuConfig->write_config($vmid, $conf);
}