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