]> git.proxmox.com Git - qemu-server.git/commitdiff
migration: avoid re-scanning all volumes
authorFabian Ebner <f.ebner@proxmox.com>
Fri, 29 Jan 2021 15:11:33 +0000 (16:11 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Sun, 18 Apr 2021 16:30:41 +0000 (18:30 +0200)
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@proxmox.com>
PVE/QemuMigrate.pm

index 0cc13df38e1e1451a019258e985fb0f187c96780..d0295f87a5fe8d2e7679801610a6de9ab8bfab4d 100644 (file)
@@ -415,6 +415,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
@@ -587,17 +588,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");