* [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