Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
---
 PVE/API2/Qemu.pm  |   18 ++++++++++++++----
 PVE/QemuServer.pm |    4 ++--
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 328a82c..a45509e 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -2744,9 +2744,15 @@ __PACKAGE__->register_method({
                 if $digest && $digest ne $conf->{digest};
             PVE::QemuServer::check_lock($conf) if !$skiplock;
 
-           die "disk '$disk' does not exist\n" if !$conf->{$disk};
+           die "disk '$disk' does not exist\n" if !$conf->{$disk} && 
!$conf->{pending}->{$disk};
+       
+           my $drive = undef;
 
-           my $drive = PVE::QemuServer::parse_drive($disk, $conf->{$disk});
+           if($conf->{pending}->{$disk}) {
+               $drive = PVE::QemuServer::parse_drive($disk, 
$conf->{pending}->{$disk});
+           } else {
+               $drive = PVE::QemuServer::parse_drive($disk, $conf->{$disk});
+           }
 
            my $volid = $drive->{file};
 
@@ -2782,11 +2788,15 @@ __PACKAGE__->register_method({
 
             PVE::Cluster::log_msg('info', $authuser, "update VM $vmid: resize 
--disk $disk --size $sizestr");
 
-           PVE::QemuServer::qemu_block_resize($vmid, "drive-$disk", $storecfg, 
$volid, $newsize);
+           PVE::QemuServer::qemu_block_resize($vmid, "drive-$disk", $storecfg, 
$volid, $newsize, $conf->{pending}->{$disk});
 
            $drive->{size} = $newsize;
-           $conf->{$disk} = PVE::QemuServer::print_drive($vmid, $drive);
 
+           if ($conf->{pending}->{$disk}) {
+               $conf->{pending}->{$disk} = PVE::QemuServer::print_drive($vmid, 
$drive);
+           } else {
+               $conf->{$disk} = PVE::QemuServer::print_drive($vmid, $drive);
+           }
            PVE::QemuServer::update_config_nolock($vmid, $conf, 1);
        };
 
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 1d85ac8..67e3015 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -3416,13 +3416,13 @@ sub vm_monitor_command {
 }
 
 sub qemu_block_resize {
-    my ($vmid, $deviceid, $storecfg, $volid, $size) = @_;
+    my ($vmid, $deviceid, $storecfg, $volid, $size, $pending) = @_;
 
     my $running = check_running($vmid);
 
     return if !PVE::Storage::volume_resize($storecfg, $volid, $size, $running);
 
-    return if !$running;
+    return if !$running || $pending;
 
     vm_mon_cmd($vmid, "block_resize", device => $deviceid, size => int($size));
 
-- 
1.7.10.4

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to