mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-05-01 08:05:24 +00:00
fix : signal interrupt don't delete volume on full copy
Currently we push newvolid to newvollist after qemu-img convert, so if signal interrupt occur during qemu-img convert, the newvollist is empty and we can't free the volume Instead, We need to push newvolid to newvollist just after volume creation Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
parent
751cc556dc
commit
c6d0c8a702
@ -1992,6 +1992,8 @@ __PACKAGE__->register_method({
|
|||||||
if (!$param->{full} && PVE::Storage::volume_is_base($storecfg, $drive->{file})) {
|
if (!$param->{full} && PVE::Storage::volume_is_base($storecfg, $drive->{file})) {
|
||||||
print "clone drive $opt ($drive->{file})\n";
|
print "clone drive $opt ($drive->{file})\n";
|
||||||
$newvolid = PVE::Storage::vdisk_clone($storecfg, $drive->{file}, $newid);
|
$newvolid = PVE::Storage::vdisk_clone($storecfg, $drive->{file}, $newid);
|
||||||
|
push @$newvollist, $newvolid;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
my ($storeid, $volname) = PVE::Storage::parse_volume_id($drive->{file});
|
my ($storeid, $volname) = PVE::Storage::parse_volume_id($drive->{file});
|
||||||
$storeid = $storage if $storage;
|
$storeid = $storage if $storage;
|
||||||
@ -2008,6 +2010,7 @@ __PACKAGE__->register_method({
|
|||||||
|
|
||||||
print "copy drive $opt ($drive->{file})\n";
|
print "copy drive $opt ($drive->{file})\n";
|
||||||
$newvolid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $newid, $fmt, undef, ($size/1024));
|
$newvolid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $newid, $fmt, undef, ($size/1024));
|
||||||
|
push @$newvollist, $newvolid;
|
||||||
|
|
||||||
PVE::QemuServer::qemu_img_convert($drive->{file}, $newvolid, $size, $snapname);
|
PVE::QemuServer::qemu_img_convert($drive->{file}, $newvolid, $size, $snapname);
|
||||||
}
|
}
|
||||||
@ -2015,7 +2018,6 @@ __PACKAGE__->register_method({
|
|||||||
my ($size) = PVE::Storage::volume_size_info($storecfg, $newvolid, 3);
|
my ($size) = PVE::Storage::volume_size_info($storecfg, $newvolid, 3);
|
||||||
my $disk = { file => $newvolid, size => $size };
|
my $disk = { file => $newvolid, size => $size };
|
||||||
$newconf->{$opt} = PVE::QemuServer::print_drive($vmid, $disk);
|
$newconf->{$opt} = PVE::QemuServer::print_drive($vmid, $disk);
|
||||||
push @$newvollist, $newvolid;
|
|
||||||
|
|
||||||
PVE::QemuServer::update_config_nolock($newid, $newconf, 1);
|
PVE::QemuServer::update_config_nolock($newid, $newconf, 1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user