Merged update from upstream sources

This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/libguestfs.git#49700015edd952aa22b5c6fbc7e816c484cbf0c1
This commit is contained in:
DistroBaker 2021-02-09 11:20:51 +00:00
parent 9147c1c142
commit 214ec76a02
2 changed files with 94 additions and 5 deletions

View File

@ -0,0 +1,80 @@
From 282e2f74cf1209ecf6bb18655018b2000a5b36a1 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 28 Jan 2021 12:20:49 +0000
Subject: [PATCH] appliance: Use -cpu max.
QEMU has a newish feature (from about 2017 / qemu 2.9) called -cpu max
which is supposed to select the best CPU, ideal for libguestfs.
After this change, on x86-64:
KVM TCG
Direct -cpu max -cpu max
(non-libvirt)
Libvirt <cpu mode="host-passthrough"> <cpu mode="host-model">
<model fallback="allow"/> <model fallback="allow"/>
</cpu> </cpu>
---
lib/appliance-cpu.c | 16 ++++++++--------
lib/launch-libvirt.c | 9 +++++++++
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/lib/appliance-cpu.c b/lib/appliance-cpu.c
index 5ef9f5c72..54ac6e2e3 100644
--- a/lib/appliance-cpu.c
+++ b/lib/appliance-cpu.c
@@ -38,6 +38,11 @@
*
* The literal string C<"host"> means use C<-cpu host>.
*
+ * =item C<"max">
+ *
+ * The literal string C<"max"> means use C<-cpu max> (the best
+ * possible). This requires awkward translation for libvirt.
+ *
* =item some string
*
* Some string such as C<"cortex-a57"> means use C<-cpu cortex-a57>.
@@ -80,14 +85,9 @@ guestfs_int_get_cpu_model (int kvm)
/* See discussion in https://bugzilla.redhat.com/show_bug.cgi?id=1605071 */
return NULL;
#else
- /* On most architectures, it is faster to pass the CPU host model to
- * the appliance, allowing maximum speed for things like checksums
- * and encryption. Only do this with KVM. It is broken in subtle
- * ways on TCG, and fairly pointless when you're emulating anyway.
+ /* On most architectures we can use "max" to get the best possible CPU.
+ * For recent qemu this should work even on TCG.
*/
- if (kvm)
- return "host";
- else
- return NULL;
+ return "max";
#endif
}
diff --git a/lib/launch-libvirt.c b/lib/launch-libvirt.c
index 026dc6b26..eff1c8f7e 100644
--- a/lib/launch-libvirt.c
+++ b/lib/launch-libvirt.c
@@ -1169,6 +1169,15 @@ construct_libvirt_xml_cpu (guestfs_h *g,
attribute ("fallback", "allow");
} end_element ();
}
+ else if (STREQ (cpu_model, "max")) {
+ if (params->data->is_kvm)
+ attribute ("mode", "host-passthrough");
+ else
+ attribute ("mode", "host-model");
+ start_element ("model") {
+ attribute ("fallback", "allow");
+ } end_element ();
+ }
else
single_element ("model", cpu_model);
} end_element ();
--
2.29.0.rc2

View File

@ -29,6 +29,7 @@
%else %else
# RHEL 9 only: # RHEL 9 only:
# x86-64: "/lib64/libc.so.6: CPU ISA level is lower than required" # x86-64: "/lib64/libc.so.6: CPU ISA level is lower than required"
# (RHBZ#1919389)
%global test_arches NONE %global test_arches NONE
%endif %endif
@ -55,7 +56,7 @@ Summary: Access and modify virtual machine disk images
Name: libguestfs Name: libguestfs
Epoch: 1 Epoch: 1
Version: 1.44.0 Version: 1.44.0
Release: 4%{?dist} Release: 5%{?dist}
License: LGPLv2+ License: LGPLv2+
# Build only for architectures that have a kernel # Build only for architectures that have a kernel
@ -85,6 +86,9 @@ Source7: libguestfs.keyring
# Maintainer script which helps with handling patches. # Maintainer script which helps with handling patches.
Source8: copy-patches.sh Source8: copy-patches.sh
# Upstream patch to use -cpu max.
Patch1: 0001-appliance-Use-cpu-max.patch
%if 0%{patches_touch_autotools} %if 0%{patches_touch_autotools}
BuildRequires: autoconf, automake, libtool, gettext-devel BuildRequires: autoconf, automake, libtool, gettext-devel
%endif %endif
@ -222,7 +226,9 @@ BuildRequires: findutils
BuildRequires: gawk BuildRequires: gawk
BuildRequires: gdisk BuildRequires: gdisk
BuildRequires: genisoimage BuildRequires: genisoimage
%if !0%{?rhel}
BuildRequires: gfs2-utils BuildRequires: gfs2-utils
%endif
BuildRequires: grep BuildRequires: grep
BuildRequires: gzip BuildRequires: gzip
%if !0%{?rhel} %if !0%{?rhel}
@ -385,9 +391,7 @@ For enhanced features, install:
%if !0%{?rhel} %if !0%{?rhel}
libguestfs-forensics adds filesystem forensics support libguestfs-forensics adds filesystem forensics support
%endif
libguestfs-gfs2 adds Global Filesystem (GFS2) support libguestfs-gfs2 adds Global Filesystem (GFS2) support
%if !0%{?rhel}
libguestfs-hfsplus adds HFS+ (Mac filesystem) support libguestfs-hfsplus adds HFS+ (Mac filesystem) support
%endif %endif
libguestfs-inspect-icons adds support for inspecting guest icons libguestfs-inspect-icons adds support for inspecting guest icons
@ -456,6 +460,7 @@ want to forensically analyze disk images using The Sleuth Kit.
%endif %endif
%if !0%{?rhel}
%package gfs2 %package gfs2
Summary: GFS2 support for %{name} Summary: GFS2 support for %{name}
License: LGPLv2+ License: LGPLv2+
@ -464,6 +469,7 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
%description gfs2 %description gfs2
This adds GFS2 support to %{name}. Install it if you want to process This adds GFS2 support to %{name}. Install it if you want to process
disk images containing GFS2. disk images containing GFS2.
%endif
%if !0%{?rhel} %if !0%{?rhel}
@ -1039,9 +1045,7 @@ move_to qemu-img zz-packages-dib
move_to which zz-packages-dib move_to which zz-packages-dib
%if !0%{?rhel} %if !0%{?rhel}
move_to sleuthkit zz-packages-forensics move_to sleuthkit zz-packages-forensics
%endif
move_to gfs2-utils zz-packages-gfs2 move_to gfs2-utils zz-packages-gfs2
%if !0%{?rhel}
move_to hfsplus-tools zz-packages-hfsplus move_to hfsplus-tools zz-packages-hfsplus
move_to jfsutils zz-packages-jfs move_to jfsutils zz-packages-jfs
move_to nilfs-utils zz-packages-nilfs move_to nilfs-utils zz-packages-nilfs
@ -1129,8 +1133,10 @@ rm ocaml/html/.gitignore
%{_libdir}/guestfs/supermin.d/zz-packages-forensics %{_libdir}/guestfs/supermin.d/zz-packages-forensics
%endif %endif
%if !0%{?rhel}
%files gfs2 %files gfs2
%{_libdir}/guestfs/supermin.d/zz-packages-gfs2 %{_libdir}/guestfs/supermin.d/zz-packages-gfs2
%endif
%if !0%{?rhel} %if !0%{?rhel}
%ifnarch ppc %ifnarch ppc
@ -1371,6 +1377,9 @@ rm ocaml/html/.gitignore
%changelog %changelog
* Tue Feb 09 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.44.0-5
- Remove gfs2-utils dependency in RHEL 9.
* Thu Jan 28 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.44.0-4 * Thu Jan 28 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.44.0-4
- ELN has full-fat qemu (not qemu-kvm). - ELN has full-fat qemu (not qemu-kvm).