[pve-devel] [PATCH] create_disks : avoid storage scan v3

Dietmar Maurer dietmar at proxmox.com
Tue Jun 11 07:23:56 CEST 2013


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

> -----Original Message-----
> From: pve-devel-bounces at pve.proxmox.com [mailto:pve-devel-
> bounces at pve.proxmox.com] On Behalf Of Alexandre Derumier
> Sent: Montag, 10. Juni 2013 09:27
> To: pve-devel at pve.proxmox.com
> Subject: [pve-devel] [PATCH] create_disks : avoid storage scan v3
> 
> 
> Signed-off-by: Alexandre Derumier <aderumier at 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 at pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel





More information about the pve-devel mailing list