[pve-devel] [PATCH qemu-server 04/11] Avoid re-scanning all volumes

Fabian Ebner f.ebner at proxmox.com
Wed May 20 10:20:39 CEST 2020


by using the information obtained in the first scan. This
also makes sure we only scan local storages.

Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
---
 PVE/QemuMigrate.pm | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index e65b28f..3b138c4 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -342,6 +342,7 @@ sub scan_local_volumes {
 		my ($volid, $sid, $volinfo) = @_;
 
 		$local_volumes->{$volid}->{ref} = 'storage';
+		$local_volumes->{$volid}->{size} = $volinfo->{size};
 
 		# If with_snapshots is not set for storage migrate, it tries to use
 		# a raw+size stream, but on-the-fly conversion from qcow2 to raw+size
@@ -516,17 +517,15 @@ sub scan_local_volumes {
 	}
 
 	# sizes in config have to be accurate for remote node to correctly
-	# allocate disks, rescan to be sure
-	my $volid_hash = PVE::QemuServer::scan_volids($storecfg, $vmid);
+	# allocate disks
 	PVE::QemuConfig->foreach_volume($conf, sub {
 	    my ($key, $drive) = @_;
 	    return if $key eq 'efidisk0'; # skip efidisk, will be handled later
 
 	    my $volid = $drive->{file};
 	    return if !defined($local_volumes->{$volid}); # only update sizes for local volumes
-	    return if !defined($volid_hash->{$volid});
 
-	    my ($updated, $msg) = PVE::QemuServer::Drive::update_disksize($drive, $volid_hash->{$volid}->{size});
+	    my ($updated, $msg) = PVE::QemuServer::Drive::update_disksize($drive, $local_volumes->{$volid}->{size});
 	    if (defined($updated)) {
 		$conf->{$key} = PVE::QemuServer::print_drive($updated);
 		$self->log('info', "drive '$key': $msg");
-- 
2.20.1





More information about the pve-devel mailing list