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

Alexandre DERUMIER aderumier at odiso.com
Tue Jun 11 11:30:56 CEST 2013


Works fine here, Thanks !


----- Mail original ----- 

De: "Dietmar Maurer" <dietmar at proxmox.com> 
À: "Alexandre Derumier" <aderumier at odiso.com>, pve-devel at pve.proxmox.com 
Envoyé: Mardi 11 Juin 2013 07:23:56 
Objet: RE: [pve-devel] [PATCH] create_disks : avoid storage scan v3 

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