* [pve-devel] [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning @ 2025-05-19 14:43 Dominik Csapak 2025-05-20 13:14 ` [pve-devel] [PATCH qemu-server] migrate: code cleanup: factor out variables for transferred memory and vfio Fiona Ebner 2025-05-21 14:37 ` [pve-devel] applied: [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning Fiona Ebner 0 siblings, 2 replies; 4+ messages in thread From: Dominik Csapak @ 2025-05-19 14:43 UTC (permalink / raw) To: pve-devel 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@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 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 4+ messages in thread
* [pve-devel] [PATCH qemu-server] migrate: code cleanup: factor out variables for transferred memory and vfio 2025-05-19 14:43 [pve-devel] [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning Dominik Csapak @ 2025-05-20 13:14 ` Fiona Ebner 2025-05-21 13:39 ` Dominik Csapak 2025-05-21 14:37 ` [pve-devel] applied: [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning Fiona Ebner 1 sibling, 1 reply; 4+ messages in thread From: Fiona Ebner @ 2025-05-20 13:14 UTC (permalink / raw) To: pve-devel Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> --- I'll apply together with this follow-up if somebody gives me a T-b/R-b PVE/QemuMigrate.pm | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index f72a9d33..5a54f173 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -1286,6 +1286,9 @@ sub phase2 { my $memstat = $stat->{ram}; + my $mem_transferred = $memstat->{transferred} || 0; + my $vfio_transferred = $stat->{vfio}->{transferred} || 0; + if ($status eq 'completed') { my $delay = time() - $start; if ($delay > 0) { @@ -1294,11 +1297,9 @@ sub phase2 { my $downtime = $stat->{downtime} || 0; $self->log('info', "average migration speed: $avg_speed/s - downtime $downtime ms"); } - my $trans = $memstat->{transferred} || 0; - my $vfio_transferred = $stat->{vfio}->{transferred} || 0; - if ($trans > 0 || $vfio_transferred > 0) { - my $transferred_h = render_bytes($trans, 1); + if ($mem_transferred > 0 || $vfio_transferred > 0) { + my $transferred_h = render_bytes($mem_transferred, 1); my $summary = "transferred $transferred_h VM-state"; if ($vfio_transferred > 0) { @@ -1321,14 +1322,9 @@ sub phase2 { last; } - 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; + if ($mem_transferred ne $last_mem_transferred + || $vfio_transferred ne $last_vfio_transferred + ) { my $rem = $memstat->{remaining} || 0; my $total = $memstat->{total} || 0; my $speed = ($memstat->{'pages-per-second'} // 0) * ($memstat->{'page-size'} // 0); @@ -1341,7 +1337,7 @@ sub phase2 { my $should_log = $usleep > 100_000 ? 1 : ($i % 10) == 0; my $total_h = render_bytes($total, 1); - my $transferred_h = render_bytes($trans, 1); + my $transferred_h = render_bytes($mem_transferred, 1); my $speed_h = render_bytes($speed, 1); my $progress = "transferred $transferred_h of $total_h VM-state, ${speed_h}/s"; @@ -1391,8 +1387,8 @@ sub phase2 { } } - $last_mem_transferred = $memstat->{transferred}; - $last_vfio_transferred = $stat->{vfio}->{transferred} // 0; + $last_mem_transferred = $mem_transferred; + $last_vfio_transferred = $vfio_transferred; } if ($self->{storage_migration}) { -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [pve-devel] [PATCH qemu-server] migrate: code cleanup: factor out variables for transferred memory and vfio 2025-05-20 13:14 ` [pve-devel] [PATCH qemu-server] migrate: code cleanup: factor out variables for transferred memory and vfio Fiona Ebner @ 2025-05-21 13:39 ` Dominik Csapak 0 siblings, 0 replies; 4+ messages in thread From: Dominik Csapak @ 2025-05-21 13:39 UTC (permalink / raw) To: pve-devel Changes look good to me, tested a few migrations, saw no issues, consider this: Reviewed-by: Dominik Csapak <d.csapak@proxmox.com> Tested-by: Dominik Csapak <d.csapak@proxmox.com> On 5/20/25 15:14, Fiona Ebner wrote: > Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> > --- > > I'll apply together with this follow-up if somebody gives me a T-b/R-b > > PVE/QemuMigrate.pm | 26 +++++++++++--------------- > 1 file changed, 11 insertions(+), 15 deletions(-) > > diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm > index f72a9d33..5a54f173 100644 > --- a/PVE/QemuMigrate.pm > +++ b/PVE/QemuMigrate.pm > @@ -1286,6 +1286,9 @@ sub phase2 { > > my $memstat = $stat->{ram}; > > + my $mem_transferred = $memstat->{transferred} || 0; > + my $vfio_transferred = $stat->{vfio}->{transferred} || 0; > + > if ($status eq 'completed') { > my $delay = time() - $start; > if ($delay > 0) { > @@ -1294,11 +1297,9 @@ sub phase2 { > my $downtime = $stat->{downtime} || 0; > $self->log('info', "average migration speed: $avg_speed/s - downtime $downtime ms"); > } > - my $trans = $memstat->{transferred} || 0; > - my $vfio_transferred = $stat->{vfio}->{transferred} || 0; > > - if ($trans > 0 || $vfio_transferred > 0) { > - my $transferred_h = render_bytes($trans, 1); > + if ($mem_transferred > 0 || $vfio_transferred > 0) { > + my $transferred_h = render_bytes($mem_transferred, 1); > my $summary = "transferred $transferred_h VM-state"; > > if ($vfio_transferred > 0) { > @@ -1321,14 +1322,9 @@ sub phase2 { > last; > } > > - 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; > + if ($mem_transferred ne $last_mem_transferred > + || $vfio_transferred ne $last_vfio_transferred > + ) { > my $rem = $memstat->{remaining} || 0; > my $total = $memstat->{total} || 0; > my $speed = ($memstat->{'pages-per-second'} // 0) * ($memstat->{'page-size'} // 0); > @@ -1341,7 +1337,7 @@ sub phase2 { > my $should_log = $usleep > 100_000 ? 1 : ($i % 10) == 0; > > my $total_h = render_bytes($total, 1); > - my $transferred_h = render_bytes($trans, 1); > + my $transferred_h = render_bytes($mem_transferred, 1); > my $speed_h = render_bytes($speed, 1); > > my $progress = "transferred $transferred_h of $total_h VM-state, ${speed_h}/s"; > @@ -1391,8 +1387,8 @@ sub phase2 { > } > } > > - $last_mem_transferred = $memstat->{transferred}; > - $last_vfio_transferred = $stat->{vfio}->{transferred} // 0; > + $last_mem_transferred = $mem_transferred; > + $last_vfio_transferred = $vfio_transferred; > } > > if ($self->{storage_migration}) { _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 4+ messages in thread
* [pve-devel] applied: [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning 2025-05-19 14:43 [pve-devel] [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning Dominik Csapak 2025-05-20 13:14 ` [pve-devel] [PATCH qemu-server] migrate: code cleanup: factor out variables for transferred memory and vfio Fiona Ebner @ 2025-05-21 14:37 ` Fiona Ebner 1 sibling, 0 replies; 4+ messages in thread From: Fiona Ebner @ 2025-05-21 14:37 UTC (permalink / raw) To: pve-devel, Dominik Csapak On Mon, 19 May 2025 16:43:57 +0200, Dominik Csapak wrote: > 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. > > [...] Applied together with my follow-up, thanks! [1/1] migrate: silence 'Use of uninitialized value' warning commit: 7d1ec25bc176969ccc86ecc2a0109fc59ec812f0 [1/1] migrate: code cleanup: factor out variables for transferred memory and vfio commit: c7609527716a111f4a6147ea68fbd327dd16eb87 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-05-21 14:38 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-05-19 14:43 [pve-devel] [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning Dominik Csapak 2025-05-20 13:14 ` [pve-devel] [PATCH qemu-server] migrate: code cleanup: factor out variables for transferred memory and vfio Fiona Ebner 2025-05-21 13:39 ` Dominik Csapak 2025-05-21 14:37 ` [pve-devel] applied: [PATCH qemu-server] migrate: silence 'Use of uninitialized value' warning Fiona Ebner
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.Service provided by Proxmox Server Solutions GmbH | Privacy | Legal