diff --git a/0001-qemuProcessRefreshDisks-Don-t-skip-filling-of-disk-i.patch b/0001-qemuProcessRefreshDisks-Don-t-skip-filling-of-disk-i.patch new file mode 100644 index 0000000..2a26798 --- /dev/null +++ b/0001-qemuProcessRefreshDisks-Don-t-skip-filling-of-disk-i.patch @@ -0,0 +1,58 @@ +From: Peter Krempa +Date: Thu, 9 Feb 2023 09:40:32 +0100 +Subject: [PATCH] qemuProcessRefreshDisks: Don't skip filling of disk + information if tray state didn't change +Content-type: text/plain + +Commit 5ef2582646eb98 added emitting of even when refreshign disk state, +where it wanted to avoid sending the event if disk state didn't change. +This was achieved by using 'continue' in the loop filling the +information. Unfortunately this skips extraction of whether the device +has a tray which is propagated into internal structures, which in turn +broke cdrom media change as the code thought there's no tray for the +device. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2166411 +Fixes: 5ef2582646eb98af208ce37355f82bdef39931fa +Signed-off-by: Peter Krempa +Reviewed-by: Kristina Hanicova +(cherry picked from commit 86cfe93ef7fdc2d665a2fc88b79af89e7978ba78) +--- + src/qemu/qemu_process.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c +index ee9f0784d3..0c408ee547 100644 +--- a/src/qemu/qemu_process.c ++++ b/src/qemu/qemu_process.c +@@ -8724,16 +8724,13 @@ qemuProcessRefreshDisks(virDomainObj *vm, + continue; + + if (info->removable) { +- virObjectEvent *event = NULL; ++ bool emitEvent = info->tray_open != disk->tray_status; + int reason; + + if (info->empty) + virDomainDiskEmptySource(disk); + + if (info->tray) { +- if (info->tray_open == disk->tray_status) +- continue; +- + if (info->tray_open) { + reason = VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN; + disk->tray_status = VIR_DOMAIN_DISK_TRAY_OPEN; +@@ -8742,8 +8739,10 @@ qemuProcessRefreshDisks(virDomainObj *vm, + disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED; + } + +- event = virDomainEventTrayChangeNewFromObj(vm, disk->info.alias, reason); +- virObjectEventStateQueue(driver->domainEventState, event); ++ if (emitEvent) { ++ virObjectEvent *event = virDomainEventTrayChangeNewFromObj(vm, disk->info.alias, reason); ++ virObjectEventStateQueue(driver->domainEventState, event); ++ } + } + } + diff --git a/0002-ch-use-CURLOPT_UPLOAD-instead-of-CURLOPT_PUT.patch b/0002-ch-use-CURLOPT_UPLOAD-instead-of-CURLOPT_PUT.patch new file mode 100644 index 0000000..1a1190c --- /dev/null +++ b/0002-ch-use-CURLOPT_UPLOAD-instead-of-CURLOPT_PUT.patch @@ -0,0 +1,39 @@ +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= +Date: Wed, 18 Jan 2023 09:45:52 +0000 +Subject: [PATCH] ch: use CURLOPT_UPLOAD instead of CURLOPT_PUT +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Content-type: text/plain + +The CURLOPT_PUT constant causes a deprecation warning when compiling on +Alpine Edge. The docs indicate it is deprecated since 7.2.1 + + https://curl.se/libcurl/c/CURLOPT_PUT.html + +Since 7.87 the deprecation is now exposed at build time via a compiler +warning. + +We already use CURLOPT_UPLOAD in the ESX driver, so this brings the CH +driver into line. + +Reviewed-by: Michal Privoznik +Signed-off-by: Daniel P. Berrangé +(cherry picked from commit 9cd70fb25cad171e415fb05a4e01f244304c602e) +--- + src/ch/ch_monitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c +index 8d8654332f..7b8f0a8077 100644 +--- a/src/ch/ch_monitor.c ++++ b/src/ch/ch_monitor.c +@@ -660,7 +660,7 @@ virCHMonitorPutNoContent(virCHMonitor *mon, const char *endpoint) + + curl_easy_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath); + curl_easy_setopt(mon->handle, CURLOPT_URL, url); +- curl_easy_setopt(mon->handle, CURLOPT_PUT, true); ++ curl_easy_setopt(mon->handle, CURLOPT_UPLOAD, 1L); + curl_easy_setopt(mon->handle, CURLOPT_HTTPHEADER, NULL); + + responseCode = virCHMonitorCurlPerform(mon->handle); diff --git a/libvirt.spec b/libvirt.spec index ed55561..c17a726 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -229,7 +229,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 9.0.0 -Release: 2.0.riscv64%{?dist} +Release: 3.0.riscv64%{?dist} License: LGPLv2+ URL: https://libvirt.org/ @@ -238,6 +238,11 @@ URL: https://libvirt.org/ %endif Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz +# Fix 'Tray of device is not open' error when changing CDROM (bz #2163117) +Patch0001: 0001-qemuProcessRefreshDisks-Don-t-skip-filling-of-disk-i.patch +# Fix curl API deprecation error +Patch0002: 0002-ch-use-CURLOPT_UPLOAD-instead-of-CURLOPT_PUT.patch + Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon-config-network = %{version}-%{release} Requires: libvirt-daemon-config-nwfilter = %{version}-%{release} @@ -2310,9 +2315,13 @@ exit 0 %changelog -* Mon Apr 17 2023 David Abdurachmanov - 9.0.0-2.0.riscv64 +* Fri May 12 2023 David Abdurachmanov - 9.0.0-3.0.riscv64 - Add riscv64 to arches_qemu_kvm +* Sun May 07 2023 Cole Robinson - 9.0.0-3 +- Fix 'Tray of device is not open' error when changing CDROM (bz #2163117) +- Fix curl API deprecation error + * Thu Jan 19 2023 Fedora Release Engineering - 9.0.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild