[pve-devel] [PATCH] create_disks : avoid storage scan
Alexandre Derumier
aderumier at odiso.com
Wed Jun 5 06:34:54 CEST 2013
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
PVE/API2/Qemu.pm | 39 +++++++++++++++++++++++++--------------
1 file changed, 25 insertions(+), 14 deletions(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 24b57ad..2b06fc8 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -132,23 +132,34 @@ my $create_disks = sub {
my $foundvolid = undef;
- 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;
- }
- });
+ my $volid_is_new = 1;
+ 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 $dl = PVE::Storage::vdisk_list($storecfg, $storeid, undef);
+
+ PVE::Storage::foreach_volid($dl, sub {
+ my ($volumeid) = @_;
+ if($volumeid eq $volid) {
+ $foundvolid = 1;
+ return;
+ }
+ });
+ }
+
+ die "image '$path' does not exists\n" if (!(-f $path || -b $path || $foundvolid));
+
+ my ($size) = PVE::Storage::volume_size_info($storecfg, $volid, 1);
+ $disk->{size} = $size;
+ }
- 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
More information about the pve-devel
mailing list