On 2/27/20 11:48 AM, Fabian Grünbichler wrote:
On February 26, 2020 11:53 am, Aaron Lauterer wrote:
If IO-Thread is activated and a new enough Qemu version installed the
program still ran into the elsif clause and never in the else clause.
Thus the "include disk ..." log output was missing for these disks.
Signed-off-by: Aaron Lauterer <a.laute...@proxmox.com>
---
PVE/VZDump/QemuServer.pm | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm
index 7695ad6..e36a259 100644
--- a/PVE/VZDump/QemuServer.pm
+++ b/PVE/VZDump/QemuServer.pm
@@ -79,11 +79,12 @@ sub prepare {
if (defined($drive->{backup}) && !$drive->{backup}) {
$self->loginfo("exclude disk '$ds' '$volid' (backup=no)");
return;
- } elsif ($self->{vm_was_running} && $drive->{iothread}) {
- if (!PVE::QemuServer::Machine::runs_at_least_qemu_version($vmid, 4,
0, 1)) {
- die "disk '$ds' '$volid' (iothread=on) can't use backup feature with
running QEMU " .
+ } elsif ($self->{vm_was_running}
+ && $drive->{iothread}
+ &&
!PVE::QemuServer::Machine::runs_at_least_qemu_version($vmid, 4, 0, 1))
not new, I know, but:
two of those three are not related to the drive. one of those two is
actually a qmp call. instead of having a condition spanning three lines,
we could refactor it like so:
my $iothread_allowed = -1; // to avoid repeated QMP calls
foreach_drive(..) {
my $iothread = $self->{vm_was_running} && $drive->{iothread}; // do we even
care?
if ($iothread && $iothread_allowed == -1) {
$iothread_allowed =
PVE::QemuServer::Machine::runs_at_least_qemu_version(...); // cache on first use
}
if ( ... ) {
} elsif ($iothread && !$iothread_allowed) { // simple condition ;)
die ...
}
alternatively, the die could also move into the else branch, assuming we
don't have efidisks with iothreads?
also, isn't this actually wrong? in stop mode, we'd get the new qemu
version when it counts, even if the VM is running the old version right
now?
Doesn't a "stop" mode backup imply the VM being shut down and restarted
before backup? I.e. the backup always will run on the currently
installed QEMU version?
If that's the case, this is correct, since we only care about which QEMU
version we send the QMP command to.
+ {
+ die "disk '$ds' '$volid' (iothread=on) can't use backup feature with
running QEMU " .
"version < 4.0.1! Either set backup=no for this drive or upgrade
QEMU and restart VM\n";
- }
} elsif ($ds =~ m/^efidisk/ && (!defined($conf->{bios}) ||
$conf->{bios} ne 'ovmf')) {
$self->loginfo("excluding '$ds' (efidisks can only be backed up when
BIOS is set to 'ovmf')");
return;
_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel