Applied, thanks. But I tried to simplify the patch - please an you test if it 
still works?

> -----Original Message-----
> From: pve-devel-boun...@pve.proxmox.com [mailto:pve-devel-
> boun...@pve.proxmox.com] On Behalf Of Alexandre Derumier
> Sent: Montag, 10. Juni 2013 09:27
> To: pve-devel@pve.proxmox.com
> Subject: [pve-devel] [PATCH] create_disks : avoid storage scan v3
> 
> 
> Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
> ---
>  PVE/API2/Qemu.pm |   33 ++++++++++++++++++---------------
>  1 file changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index
> b99045e..5b88ee7 100644
> --- a/PVE/API2/Qemu.pm
> +++ b/PVE/API2/Qemu.pm
> @@ -130,25 +130,28 @@ my $create_disks = sub {
> 
>           my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid,
> 1);
> 
> -         my $foundvolid = undef;
> +         my $foundvolid = 1;
> +         my $volid_is_new = 1;
> 
> -         if ($storeid) {
> -             PVE::Storage::activate_volumes($storecfg, [ $volid ]);
> -             my $dl = PVE::Storage::vdisk_list($storecfg, $storeid, undef);
> -
> -             PVE::Storage::foreach_volid($dl, sub {
> -                 my ($volumeid) = @_;
> -                 if($volumeid eq $volid) {
> -                     $foundvolid = 1;
> -                     return;
> -                 }
> -             });
> +         if ($conf->{$ds}) {
> +             my $olddrive = PVE::QemuServer::parse_drive($ds, $conf-
> >{$ds});
> +             $volid_is_new = undef if $olddrive->{file} && $olddrive-
> >{file} eq
> +$volid;
>           }
> 
> -         die "image '$path' does not exists\n" if (!(-f $path || -b $path ||
> $foundvolid));
> +         if($volid_is_new){
> +
> +             PVE::Storage::activate_volumes($storecfg, [ $volid ]) if
> $storeid;
> +             my $size = undef;
> +             eval {
> +                 $size = PVE::Storage::volume_size_info($storecfg, $volid);
> +                 die if !$size;
> +                 $disk->{size} = $size;
> +             };
> +             $foundvolid = undef if $@;
> +
> +             die "volume $volid does not exists\n" if (!(-f $path || -b $path
> || $foundvolid));
> +         }
> 
> -         my ($size) = PVE::Storage::volume_size_info($storecfg, $volid, 1);
> -         $disk->{size} = $size;
>           $res->{$ds} = PVE::QemuServer::print_drive($vmid, $disk);
>       }
>      });
> --
> 1.7.10.4
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


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

Reply via email to