]> git.proxmox.com Git - qemu-server.git/commitdiff
fix : signal interrupt don't delete volume on full copy
authorAlexandre Derumier <aderumier@odiso.com>
Thu, 2 May 2013 04:43:37 +0000 (06:43 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 2 May 2013 04:49:12 +0000 (06:49 +0200)
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>
PVE/API2/Qemu.pm

index f524dfc5427223446fea168f5fc85a96a53097f8..6d02ded146f6ab753d89e870ef997ad1ba4e1d4c 100644 (file)
@@ -1992,6 +1992,8 @@ __PACKAGE__->register_method({
                            if (!$param->{full} && PVE::Storage::volume_is_base($storecfg,  $drive->{file})) {
                                print "clone drive $opt ($drive->{file})\n";
                                $newvolid = PVE::Storage::vdisk_clone($storecfg,  $drive->{file}, $newid);
+                               push @$newvollist, $newvolid;
+
                            } else {
                                my ($storeid, $volname) = PVE::Storage::parse_volume_id($drive->{file});
                                $storeid = $storage if $storage;
@@ -2008,6 +2010,7 @@ __PACKAGE__->register_method({
 
                                print "copy drive $opt ($drive->{file})\n";
                                $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);
                            }
@@ -2015,7 +2018,6 @@ __PACKAGE__->register_method({
                            my ($size) = PVE::Storage::volume_size_info($storecfg, $newvolid, 3);
                            my $disk = { file => $newvolid, size => $size };
                            $newconf->{$opt} = PVE::QemuServer::print_drive($vmid, $disk);
-                           push @$newvollist, $newvolid;
 
                            PVE::QemuServer::update_config_nolock($newid, $newconf, 1);
                        }