diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 455f0fe1..f7212389 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -7203,6 +7203,15 @@ sub version_cmp { return 0; } +sub runs_at_least_qemu_version { + my ($vmid, $major, $minor, $extra) = @_; + + my $v = PVE::QemuServer::vm_qmp_command($vmid, { execute => 'query-version' }); + $v = $v->{qemu}; + + return version_cmp($v->{major}, $major, $v->{minor}, $minor, $v->{micro}, $extra) >= 0; +} + sub qemu_machine_pxe { my ($vmid, $conf) = @_; diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm index ad96b013..955339a2 100644 --- a/PVE/VZDump/QemuServer.pm +++ b/PVE/VZDump/QemuServer.pm @@ -77,7 +77,10 @@ sub prepare { $self->loginfo("exclude disk '$ds' '$volid' (backup=no)"); return; } elsif ($drive->{iothread}) { - die "disk '$ds' '$volid' (iothread=on) can't use backup feature currently. Please set backup=no for this drive"; + if (!PVE::QemuServer::runs_at_least_qemu_version($vmid, 4, 0, 1)) { + 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"; + } } else { my $log = "include disk '$ds' '$volid'"; if (defined $drive->{size}) {