For creation, activation and size update never triggered, because the passed in $conf is essentially the same as the creation $settings, so the disk was always detected to be the same as the "existing" one. But actually, all disks are new, so it makes sense to do it.
For update, activation and size update nearly always triggered, because only the pending changes are passed in as $conf. The case where it didn't trigger is when the same pending change was made twice (there are cases where hotplug isn't done, but makes it even more unlikely). Signed-off-by: Fabian Ebner <f.eb...@proxmox.com> --- PVE/API2/Qemu.pm | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index 9be1caf..02b26d2 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -213,26 +213,13 @@ my $create_disks = sub { delete $disk->{format}; # no longer needed $res->{$ds} = PVE::QemuServer::print_drive($disk); } else { - PVE::Storage::check_volume_access($rpcenv, $authuser, $storecfg, $vmid, $volid); - my $volid_is_new = 1; - - if ($conf->{$ds}) { - my $olddrive = PVE::QemuServer::parse_drive($ds, $conf->{$ds}); - $volid_is_new = undef if $olddrive->{file} && $olddrive->{file} eq $volid; - } - - if ($volid_is_new) { + PVE::Storage::activate_volumes($storecfg, [ $volid ]) if $storeid; - PVE::Storage::activate_volumes($storecfg, [ $volid ]) if $storeid; - - my $size = PVE::Storage::volume_size_info($storecfg, $volid); - - die "volume $volid does not exist\n" if !$size; - - $disk->{size} = $size; - } + my $size = PVE::Storage::volume_size_info($storecfg, $volid); + die "volume $volid does not exist\n" if !$size; + $disk->{size} = $size; $res->{$ds} = PVE::QemuServer::print_drive($disk); } -- 2.30.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel