Signed-off-by: Alexandre Derumier <aderum...@odiso.com> --- PVE/API2/Qemu.pm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index 34a5d5d..0d5569c 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -2421,21 +2421,29 @@ __PACKAGE__->register_method({ my $upid = shift; my $newvollist = []; + my $jobs = {}; eval { local $SIG{INT} = $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = sub { die "interrupted by signal\n"; }; PVE::Storage::activate_volumes($storecfg, $vollist, $snapname); + my $total_jobs = scalar(keys %{$drives}); + my $i = 1; + my $skipcomplete = 1; + foreach my $opt (keys %$drives) { + my $drive = $drives->{$opt}; + $skipcomplete = undef if $total_jobs == $i; #finish after last drive my $newdrive = PVE::QemuServer::clone_disk($storecfg, $vmid, $running, $opt, $drive, $snapname, - $newid, $storage, $format, $fullclone->{$opt}, $newvollist); + $newid, $storage, $format, $fullclone->{$opt}, $newvollist, $jobs, $skipcomplete); $newconf->{$opt} = PVE::QemuServer::print_drive($vmid, $newdrive); PVE::QemuConfig->write_config($newid, $newconf); + $i++; } delete $newconf->{lock}; @@ -2456,6 +2464,8 @@ __PACKAGE__->register_method({ if (my $err = $@) { unlink $conffile; + eval { PVE::QemuServer::qemu_blockjobs_cancel($vmid, $jobs) }; + sleep 1; # some storage like rbd need to wait before release volume - really? foreach my $volid (@$newvollist) { -- 2.1.4 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel