This does not work for me:

old code:

# qm set 100 -ide0 /dev/pve/test1

==> ide0: /dev/pve/test1,size=1G

your code:

==> ide0: /dev/pve/test1

> -----Original Message-----
> From: [email protected] [mailto:pve-devel-
> [email protected]] On Behalf Of Alexandre Derumier
> Sent: Mittwoch, 05. Juni 2013 08:53
> To: [email protected]
> Subject: [pve-devel] [PATCH] create_disks : avoid storage scan v2
> 
> 
> Signed-off-by: Alexandre Derumier <[email protected]>
> ---
>  PVE/API2/Qemu.pm |   35 ++++++++++++++++++++---------------
>  1 file changed, 20 insertions(+), 15 deletions(-)
> 
> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index
> 24b57ad..0e00529 100644
> --- a/PVE/API2/Qemu.pm
> +++ b/PVE/API2/Qemu.pm
> @@ -130,25 +130,30 @@ 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){
> +
> +             if ($storeid) {
> +
> +                 PVE::Storage::activate_volumes($storecfg, [ $volid ]);
> +                 my $size = undef;
> +                 eval {
> +                     $size = PVE::Storage::volume_size_info($storecfg,
> $volid);
> +                     $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
> [email protected]
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


_______________________________________________
pve-devel mailing list
[email protected]
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to