Ok, I'll look a this today, thank for the report. ----- Mail original -----
De: "Dietmar Maurer" <[email protected]> À: "Alexandre Derumier" <[email protected]>, [email protected] Envoyé: Lundi 10 Juin 2013 07:00:33 Objet: RE: [pve-devel] [PATCH] create_disks : avoid storage scan v2 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
