[pve-devel] [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning

Dominik Csapak d.csapak at proxmox.com
Mon May 19 16:43:57 CEST 2025


If no vfio device is present during migration, and the transferred
(main) memory did not change between loop cycles, we get a warning:

 Use of uninitialized value $last_vfio_transferred in string ne

To silence that, check if the transferred vfio value is defined before,
and always write a defined value to $last_vfio_transferred.

This was noticed by a forum user:
https://forum.proxmox.com/threads/166161/

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 PVE/QemuMigrate.pm | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index b7bf2aa3..f72a9d33 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -1321,9 +1321,12 @@ sub phase2 {
 	    last;
 	}
 
-	if ($memstat->{transferred} ne $last_mem_transferred ||
-	    $stat->{vfio}->{transferred} ne $last_vfio_transferred
-	) {
+	if (
+	    $memstat->{transferred} ne $last_mem_transferred
+	    || (defined($stat->{vfio}->{transferred})
+		&& $stat->{vfio}->{transferred} ne $last_vfio_transferred)
+	)
+	{
 	    my $trans = $memstat->{transferred} || 0;
 	    my $vfio_transferred = $stat->{vfio}->{transferred} || 0;
 	    my $rem = $memstat->{remaining} || 0;
@@ -1389,7 +1392,7 @@ sub phase2 {
 	}
 
 	$last_mem_transferred = $memstat->{transferred};
-	$last_vfio_transferred = $stat->{vfio}->{transferred};
+	$last_vfio_transferred = $stat->{vfio}->{transferred} // 0;
     }
 
     if ($self->{storage_migration}) {
-- 
2.39.5





More information about the pve-devel mailing list