[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