import libguestfs-1.46.1-2.el9

This commit is contained in:
CentOS Sources 2022-01-11 12:18:03 -05:00 committed by Stepan Oksanichenko
parent 30cb5425ea
commit 02b4ec6b53
21 changed files with 513 additions and 285 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/libguestfs-1.46.0.tar.gz
SOURCES/libguestfs-1.46.1.tar.gz
SOURCES/libguestfs.keyring

View File

@ -1,2 +1,2 @@
7f8f969a579861efc457bdacf3c39a4931de7ec2 SOURCES/libguestfs-1.46.0.tar.gz
156b8a427d03ddfa956fedb69ec00221e891e4c2 SOURCES/libguestfs-1.46.1.tar.gz
1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring

View File

@ -1,153 +0,0 @@
From e2f8db27d0af5217eb5d0487e0713309559d4489 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Tue, 21 Sep 2021 21:29:39 +0200
Subject: [PATCH] Go bindings: fix "C array of strings" -- char** -- allocation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The current "arg_string_list" and "free_string_list" implementations go
back to commit b6f01f32606d ("Add Go (language) bindings.", 2013-07-03).
There are two problems with them:
- "free_string_list" doesn't actually free anything,
- at the *first* such g.Internal_test() call site that passes an
Ostringlist member inside the Optargs argument, namely:
> g.Internal_test ("abc",
> string_addr ("def"),
> []string{},
> false,
> 0,
> 0,
> "123",
> "456",
> []byte{'a', 'b', 'c', '\000', 'a', 'b', 'c'},
> &guestfs.OptargsInternal_test{Ostringlist_is_set: true,
> Ostringlist: []string{}
> }
> )
the "golang/run-bindtests" case crashes:
> panic: runtime error: cgo argument has Go pointer to Go pointer
>
> goroutine 1 [running]:
> libguestfs.org/guestfs.(*Guestfs).Internal_test.func7(0xc000018180,
> 0xadfb60, 0xadfb80, 0xc000010048, 0x0, 0x0, 0x0, 0xae3e10, 0xae3e30,
> 0xade3a0, ...)
> golang/src/libguestfs.org/guestfs/guestfs.go:6729 +0xa9
> libguestfs.org/guestfs.(*Guestfs).Internal_test(0xc000018180, 0x4ee3a5,
> 0x3, 0xc000061be8, 0xc000061af8, 0x0, 0x0, 0xc000061a00, 0x0, 0x0, ...)
> golang/src/libguestfs.org/guestfs/guestfs.go:6729 +0x3c9
> main.main()
> golang/bindtests/bindtests.go:77 +0x151e
> exit status 2
> FAIL run-bindtests (exit status: 1)
In Daniel P. Berrangé's words [1],
> You're allowed to pass a Go pointer to C via CGo, but the memory that
> points to is not allowed to contained further Go pointers. So the struct
> fields must strictly use a C pointer.
One pattern to solve the problem has been shown on stackoverflow [2].
Thus, rewrite the "arg_string_list" and "free_string_list" functions
almost entirely in C, following that example.
While this approach is not the most idiomatic Go, as a solution exists
without C helper functions [3], it should still be acceptable, at least as
an incremental improvement, for letting "golang/run-bindtests" pass.
[1] https://listman.redhat.com/archives/libguestfs/2021-September/msg00118.html
[2] https://stackoverflow.com/questions/35924545/golang-cgo-panic-runtime-error-cgo-argument-has-go-pointer-to-go-pointer
[3] https://listman.redhat.com/archives/libguestfs/2021-September/msg00106.html
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Richard W.M. Jones" <rjones@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20210921192939.32468-1-lersek@redhat.com>
Tested-by: "Richard W.M. Jones" <rjones@redhat.com>
Acked-by: "Richard W.M. Jones" <rjones@redhat.com>
---
generator/golang.ml | 47 ++++++++++++++++++++++++++++++++++++---------
1 file changed, 38 insertions(+), 9 deletions(-)
diff --git a/generator/golang.ml b/generator/golang.ml
index d328abe4e..0d6a92367 100644
--- a/generator/golang.ml
+++ b/generator/golang.ml
@@ -52,6 +52,40 @@ _go_guestfs_create_flags (unsigned flags)
{
return guestfs_create_flags (flags);
}
+
+// Passing a Go pointer to C via CGo is allowed, but the memory that points to
+// is not allowed to contain further Go pointers. The helper functions below
+// are one way to implement this, although the same can be achieved purely in
+// Go as well. See the discussion here:
+// <https://listman.redhat.com/archives/libguestfs/2021-September/msg00101.html>.
+typedef char *pChar;
+
+pChar *allocStringArray (size_t nmemb)
+{
+ pChar *array;
+
+ array = malloc (sizeof (pChar) * (nmemb + 1));
+ array[nmemb] = NULL;
+ return array;
+}
+
+void storeString (pChar *array, size_t idx, pChar string)
+{
+ array[idx] = string;
+}
+
+void freeStringArray (pChar *array)
+{
+ pChar *position;
+ pChar string;
+
+ position = array;
+ while ((string = *position) != NULL) {
+ free (string);
+ position++;
+ }
+ free (array);
+}
*/
import \"C\"
@@ -148,12 +182,11 @@ func (g *Guestfs) Close () *GuestfsError {
* C strings and golang []string.
*/
func arg_string_list (xs []string) **C.char {
- r := make ([]*C.char, 1 + len (xs))
+ r := C.allocStringArray (C.size_t (len (xs)))
for i, x := range xs {
- r[i] = C.CString (x)
+ C.storeString (r, C.size_t (i), C.CString (x));
}
- r[len (xs)] = nil
- return &r[0]
+ return (**C.char) (r)
}
func count_string_list (argv **C.char) int {
@@ -167,11 +200,7 @@ func count_string_list (argv **C.char) int {
}
func free_string_list (argv **C.char) {
- for *argv != nil {
- //C.free (*argv)
- argv = (**C.char) (unsafe.Pointer (uintptr (unsafe.Pointer (argv)) +
- unsafe.Sizeof (*argv)))
- }
+ C.freeStringArray ((*C.pChar) (argv))
}
func return_string_list (argv **C.char) []string {
--
2.31.1

View File

@ -1,4 +1,4 @@
From 3f6f2fb8f6997e5e993d0e493470323476f33243 Mon Sep 17 00:00:00 2001
From 336ecfab3bb1e14deea9ade891fb772e0698f8d8 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Fri, 1 Oct 2021 14:53:38 +0200
Subject: [PATCH] daemon/inspect_fs_unix: recognize modern Pardus GNU/Linux
@ -35,5 +35,5 @@ index 557f32833..652bacc0f 100644
| "rhel" -> Some DISTRO_RHEL
| "sles" | "sled" -> Some DISTRO_SLES
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -1,4 +1,4 @@
From ab80c515bfd527e1609d4e5ffd7c6b18d5a202dc Mon Sep 17 00:00:00 2001
From 3db4dd1804b72575789a67f22a86d6085a141310 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Wed, 13 Oct 2021 18:30:23 +0200
Subject: [PATCH] daemon: inspection: Add support for Kylin (RHBZ#1995391).
@ -96,5 +96,5 @@ index 690afd460..0c6d39b43 100644
Linux Mint.
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -0,0 +1,209 @@
From a98532ac7d6c79889703603d9f4ab008f0febd53 Mon Sep 17 00:00:00 2001
From: Neil Hanlon <neil@resf.org>
Date: Fri, 10 Dec 2021 08:50:48 +0000
Subject: [PATCH] Add detection support for Rocky Linux (CentOS/RHEL-like)
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2030709
Thanks: label@rockylinux.org
---
RWMJ notes: I fixed the original patch so it compiled. This patch
sets osinfo to "rocky8", which doesn't exist in the osinfo db yet.
Arguably we might want to set this to "centos8", but we can see what
libosinfo decides to do. Here is partial virt-inspector output on a
Rocky Linux disk image:
$ ./run virt-inspector -a disk.img
<?xml version="1.0"?>
<operatingsystems>
<operatingsystem>
<root>/dev/rl/root</root>
<name>linux</name>
<arch>x86_64</arch>
<distro>rocky</distro>
<product_name>Rocky Linux 8.5 (Green Obsidian)</product_name>
<major_version>8</major_version>
<minor_version>5</minor_version>
<package_format>rpm</package_format>
<package_management>dnf</package_management>
<hostname>localhost.localdomain</hostname>
<osinfo>rocky8</osinfo>
<mountpoints>
<mountpoint dev="/dev/rl/root">/</mountpoint>
<mountpoint dev="/dev/sda1">/boot</mountpoint>
</mountpoints>
<filesystems>
<filesystem dev="/dev/rl/root">
<type>xfs</type>
<uuid>fed8331f-9f25-40cd-883e-090cd640559d</uuid>
</filesystem>
<filesystem dev="/dev/rl/swap">
<type>swap</type>
<uuid>6da2c121-ea7d-49ce-98a3-14a37fceaadd</uuid>
</filesystem>
<filesystem dev="/dev/sda1">
<type>xfs</type>
<uuid>4efafe61-2d20-4d93-8055-537e09bfd033</uuid>
</filesystem>
</filesystems>
(cherry picked from commit 631962c0e88a321646846be91d0fbea1ba14e263)
---
daemon/inspect_fs.ml | 2 ++
daemon/inspect_fs_unix.ml | 13 ++++++++++++-
daemon/inspect_types.ml | 2 ++
daemon/inspect_types.mli | 1 +
generator/actions_inspection.ml | 4 ++++
lib/inspect-icon.c | 1 +
lib/inspect-osinfo.c | 4 ++++
7 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/daemon/inspect_fs.ml b/daemon/inspect_fs.ml
index 77f0f6aea..9c73d97ef 100644
--- a/daemon/inspect_fs.ml
+++ b/daemon/inspect_fs.ml
@@ -259,6 +259,7 @@ and check_package_format { distro } =
| None -> None
| Some DISTRO_ALTLINUX
| Some DISTRO_CENTOS
+ | Some DISTRO_ROCKY
| Some DISTRO_FEDORA
| Some DISTRO_MAGEIA
| Some DISTRO_MANDRIVA
@@ -329,6 +330,7 @@ and check_package_management { distro; version } =
Some PACKAGE_MANAGEMENT_DNF
| Some DISTRO_CENTOS
+ | Some DISTRO_ROCKY
| Some DISTRO_ORACLE_LINUX
| Some DISTRO_REDHAT_BASED
| Some DISTRO_RHEL
diff --git a/daemon/inspect_fs_unix.ml b/daemon/inspect_fs_unix.ml
index 7f6eb92e9..63cb279d0 100644
--- a/daemon/inspect_fs_unix.ml
+++ b/daemon/inspect_fs_unix.ml
@@ -32,6 +32,8 @@ let re_rhel_no_minor = PCRE.compile "Red Hat.*release (\\d+)"
let re_centos_old = PCRE.compile "CentOS.*release (\\d+).*Update (\\d+)"
let re_centos = PCRE.compile "CentOS.*release (\\d+)\\.(\\d+)"
let re_centos_no_minor = PCRE.compile "CentOS.*release (\\d+)"
+let re_rocky = PCRE.compile "Rocky Linux.*release (\\d+)\\.(\\d+)"
+let re_rocky_no_minor = PCRE.compile "Rocky Linux.*release (\\d+)"
let re_scientific_linux_old =
PCRE.compile "Scientific Linux.*release (\\d+).*Update (\\d+)"
let re_scientific_linux =
@@ -106,7 +108,7 @@ let rec parse_os_release release_file data =
* we detect that situation then bail out and use the release
* files instead.
*)
- | { distro = Some (DISTRO_DEBIAN|DISTRO_CENTOS);
+ | { distro = Some (DISTRO_DEBIAN|DISTRO_CENTOS|DISTRO_ROCKY);
version = Some (_, 0) } ->
false
@@ -155,6 +157,7 @@ and distro_of_os_release_id = function
| "pardus" -> Some DISTRO_PARDUS
| "pld" -> Some DISTRO_PLD_LINUX
| "rhel" -> Some DISTRO_RHEL
+ | "rocky" -> Some DISTRO_ROCKY
| "sles" | "sled" -> Some DISTRO_SLES
| "ubuntu" -> Some DISTRO_UBUNTU
| "void" -> Some DISTRO_VOID_LINUX
@@ -405,6 +408,10 @@ let linux_root_tests : tests = [
DISTRO_CENTOS;
"/etc/centos-release", parse_generic ~rex:re_centos_no_minor
DISTRO_CENTOS;
+ "/etc/rocky-release", parse_generic ~rex:re_rocky
+ DISTRO_ROCKY;
+ "/etc/rocky-release", parse_generic ~rex:re_rocky_no_minor
+ DISTRO_ROCKY;
"/etc/altlinux-release", parse_generic DISTRO_ALTLINUX;
"/etc/redhat-release", parse_generic ~rex:re_fedora
DISTRO_FEDORA;
@@ -420,6 +427,10 @@ let linux_root_tests : tests = [
DISTRO_CENTOS;
"/etc/redhat-release", parse_generic ~rex:re_centos_no_minor
DISTRO_CENTOS;
+ "/etc/redhat-release", parse_generic ~rex:re_rocky
+ DISTRO_ROCKY;
+ "/etc/redhat-release", parse_generic ~rex:re_rocky_no_minor
+ DISTRO_ROCKY;
"/etc/redhat-release", parse_generic ~rex:re_scientific_linux_old
DISTRO_SCIENTIFIC_LINUX;
"/etc/redhat-release", parse_generic ~rex:re_scientific_linux
diff --git a/daemon/inspect_types.ml b/daemon/inspect_types.ml
index e2bc7165c..9395c51f9 100644
--- a/daemon/inspect_types.ml
+++ b/daemon/inspect_types.ml
@@ -95,6 +95,7 @@ and distro =
| DISTRO_PLD_LINUX
| DISTRO_REDHAT_BASED
| DISTRO_RHEL
+ | DISTRO_ROCKY
| DISTRO_SCIENTIFIC_LINUX
| DISTRO_SLACKWARE
| DISTRO_SLES
@@ -228,6 +229,7 @@ and string_of_distro = function
| DISTRO_PLD_LINUX -> "pldlinux"
| DISTRO_REDHAT_BASED -> "redhat-based"
| DISTRO_RHEL -> "rhel"
+ | DISTRO_ROCKY -> "rocky"
| DISTRO_SCIENTIFIC_LINUX -> "scientificlinux"
| DISTRO_SLACKWARE -> "slackware"
| DISTRO_SLES -> "sles"
diff --git a/daemon/inspect_types.mli b/daemon/inspect_types.mli
index 43c79818f..29c76e8ab 100644
--- a/daemon/inspect_types.mli
+++ b/daemon/inspect_types.mli
@@ -102,6 +102,7 @@ and distro =
| DISTRO_PLD_LINUX
| DISTRO_REDHAT_BASED
| DISTRO_RHEL
+ | DISTRO_ROCKY
| DISTRO_SCIENTIFIC_LINUX
| DISTRO_SLACKWARE
| DISTRO_SLES
diff --git a/generator/actions_inspection.ml b/generator/actions_inspection.ml
index 0c6d39b43..f8b744993 100644
--- a/generator/actions_inspection.ml
+++ b/generator/actions_inspection.ml
@@ -278,6 +278,10 @@ Some Red Hat-derived distro.
Red Hat Enterprise Linux.
+=item \"rocky\"
+
+Rocky Linux.
+
=item \"scientificlinux\"
Scientific Linux.
diff --git a/lib/inspect-icon.c b/lib/inspect-icon.c
index 725af574b..3bffa4f80 100644
--- a/lib/inspect-icon.c
+++ b/lib/inspect-icon.c
@@ -138,6 +138,7 @@ guestfs_impl_inspect_get_icon (guestfs_h *g, const char *root, size_t *size_r,
else if (STREQ (distro, "rhel") ||
STREQ (distro, "redhat-based") ||
STREQ (distro, "centos") ||
+ STREQ (distro, "rocky") ||
STREQ (distro, "scientificlinux") ||
STREQ (distro, "oraclelinux")) {
r = icon_rhel (g, guestfs_inspect_get_major_version (g, root), &size);
diff --git a/lib/inspect-osinfo.c b/lib/inspect-osinfo.c
index db38d87f7..90e57e6df 100644
--- a/lib/inspect-osinfo.c
+++ b/lib/inspect-osinfo.c
@@ -47,6 +47,10 @@ guestfs_impl_inspect_get_osinfo (guestfs_h *g, const char *root)
else if (major == 6)
return safe_asprintf (g, "%s%d.%d", distro, major, minor);
}
+ else if (STREQ (distro, "rocky")) {
+ if (major >= 8)
+ return safe_asprintf (g, "%s%d", distro, major);
+ }
else if (STREQ (distro, "debian")) {
if (major >= 4)
return safe_asprintf (g, "%s%d", distro, major);
--
2.19.1.3.g30247aa5d201

View File

@ -1,33 +0,0 @@
From 63c9cd933af75ca759fa2f2bbdbb07a699df5b30 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 5 Oct 2021 20:51:19 +0100
Subject: [PATCH] m4/guestfs-ocaml.m4: Fix deprecated warning format
In OCaml 4.13:
Alert ocaml_deprecated_cli: Setting a warning with a sequence of lowercase or uppercase letters,
like 'CDEFLMPSUVYZX', is deprecated.
Use the equivalent signed form: +C+D+E+F+L+M+P+S+U+V+Y+Z+X+52-3.
(cherry picked from
guestfs-tools commit fa4f59e1d99c08d7e0bae2a7cb54f254a6506d67)
---
m4/guestfs-ocaml.m4 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/m4/guestfs-ocaml.m4 b/m4/guestfs-ocaml.m4
index 4b8a44dee..d7f9462ea 100644
--- a/m4/guestfs-ocaml.m4
+++ b/m4/guestfs-ocaml.m4
@@ -232,7 +232,7 @@ EOF
])
dnl Flags we want to pass to every OCaml compiler call.
-OCAML_WARN_ERROR="-warn-error CDEFLMPSUVYZX+52-3"
+OCAML_WARN_ERROR="-warn-error +C+D+E+F+L+M+P+S+U+V+Y+Z+X+52-3"
AC_SUBST([OCAML_WARN_ERROR])
OCAML_FLAGS="-g -annot $safe_string_option"
AC_SUBST([OCAML_FLAGS])
--
2.31.1

View File

@ -0,0 +1,65 @@
From 43e0fdd6cb94370e74b1214c7550aa98b8307409 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Thu, 23 Dec 2021 11:36:59 +0100
Subject: [PATCH] launch-libvirt: place our virtio-net-pci device in slot 0x1e
The <qemu:commandline> trick we use for adding our virtio-net-pci device
in the libvirt backend can conflict with libvirtd's and QEMU's PCI address
assignment. Try to mitigate that by placing our device in slot 0x1e on the
root bus. In practice this could only conflict with a "dmi-to-pci-bridge"
device model, which libvirtd itself places in slot 0x1e. However, given
the XMLs we generate, and modern QEMU versions, libvirtd has no reason to
auto-add "dmi-to-pci-bridge". Refer to
<https://libvirt.org/formatdomain.html#controllers>.
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2034160
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20211223103701.12702-2-lersek@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
(cherry picked from commit 5ce5ef6a97a58c5e906083ad4e944545712b3f3f)
---
lib/guestfs-internal.h | 11 +++++++++++
lib/launch-libvirt.c | 4 +++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
index 4097b33fd..8eb2dd3ad 100644
--- a/lib/guestfs-internal.h
+++ b/lib/guestfs-internal.h
@@ -172,6 +172,17 @@ cleanup_mutex_unlock (pthread_mutex_t **ptr)
#define VIRTIO_DEVICE_NAME(type) type "-pci"
#endif
+/* Place the virtio-net controller in slot 0x1e on the root bus, on normal
+ * hardware with PCI. Refer to RHBZ#2034160.
+ */
+#ifdef HAVE_LIBVIRT_BACKEND
+#if defined(__arm__) || defined(__s390x__)
+#define VIRTIO_NET_PCI_ADDR ""
+#else
+#define VIRTIO_NET_PCI_ADDR ",addr=1e.0"
+#endif
+#endif
+
/* Guestfs handle and associated structures. */
/* State. */
diff --git a/lib/launch-libvirt.c b/lib/launch-libvirt.c
index 194530c49..9e8336938 100644
--- a/lib/launch-libvirt.c
+++ b/lib/launch-libvirt.c
@@ -1851,7 +1851,9 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g,
} end_element ();
start_element ("qemu:arg") {
- attribute ("value", VIRTIO_DEVICE_NAME ("virtio-net") ",netdev=usernet");
+ attribute ("value", (VIRTIO_DEVICE_NAME ("virtio-net")
+ ",netdev=usernet"
+ VIRTIO_NET_PCI_ADDR));
} end_element ();
}
--
2.19.1.3.g30247aa5d201

View File

@ -0,0 +1,70 @@
From 80899629519139a7eb86842942a9471d05eb4112 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Thu, 23 Dec 2021 11:37:00 +0100
Subject: [PATCH] lib: extract NETWORK_ADDRESS and NETWORK_PREFIX as macros
The 169.254.0.0/16 network specification (for the appliance) is currently
duplicated between the direct backend and the libvirt backend. In a
subsequent patch, we're going to need the network specification in yet
another spot; extract it now to the NETWORK_ADDRESS and NETWORK_PREFIX
macros (simply as strings).
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2034160
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20211223103701.12702-3-lersek@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
(cherry picked from commit 216de164e091a5c36403f24901698044a43ae0d9)
---
lib/guestfs-internal.h | 6 ++++++
lib/launch-direct.c | 2 +-
lib/launch-libvirt.c | 3 ++-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
index 8eb2dd3ad..e24d570f5 100644
--- a/lib/guestfs-internal.h
+++ b/lib/guestfs-internal.h
@@ -183,6 +183,12 @@ cleanup_mutex_unlock (pthread_mutex_t **ptr)
#endif
#endif
+/* Network address and network mask (expressed as address prefix) that the
+ * appliance will see (if networking is enabled).
+ */
+#define NETWORK_ADDRESS "169.254.0.0"
+#define NETWORK_PREFIX "16"
+
/* Guestfs handle and associated structures. */
/* State. */
diff --git a/lib/launch-direct.c b/lib/launch-direct.c
index e5b9a5611..4f038f4f0 100644
--- a/lib/launch-direct.c
+++ b/lib/launch-direct.c
@@ -689,7 +689,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
start_list ("-netdev") {
append_list ("user");
append_list ("id=usernet");
- append_list ("net=169.254.0.0/16");
+ append_list ("net=" NETWORK_ADDRESS "/" NETWORK_PREFIX);
} end_list ();
start_list ("-device") {
append_list (VIRTIO_DEVICE_NAME ("virtio-net"));
diff --git a/lib/launch-libvirt.c b/lib/launch-libvirt.c
index 9e8336938..266d88824 100644
--- a/lib/launch-libvirt.c
+++ b/lib/launch-libvirt.c
@@ -1843,7 +1843,8 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g,
} end_element ();
start_element ("qemu:arg") {
- attribute ("value", "user,id=usernet,net=169.254.0.0/16");
+ attribute ("value",
+ "user,id=usernet,net=" NETWORK_ADDRESS "/" NETWORK_PREFIX);
} end_element ();
start_element ("qemu:arg") {
--
2.19.1.3.g30247aa5d201

View File

@ -0,0 +1,91 @@
From a18bc12081bcebf2d78883d1c6981c454149bb39 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Thu, 23 Dec 2021 11:37:01 +0100
Subject: [PATCH] launch-libvirt: add virtio-net via the standard <interface>
element
Starting with version 3.8.0, libvirt allows us to specify the network
address and network mask (as prefix) for SLIRP directly via the
<interface> element in the domain XML:
<https://libvirt.org/formatdomain.html#userspace-slirp-stack>. This means
we don't need the <qemu:commandline> hack for virtio-net on such versions.
Restrict the hack in construct_libvirt_xml_qemu_cmdline() to
libvirt<3.8.0, and generate the proper <interface> element in
construct_libvirt_xml_devices() on libvirt>=3.8.0.
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2034160
Suggested-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20211223103701.12702-4-lersek@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
(cherry picked from commit 5858c2cf6c24b3776e3867eafd9d86a1f4912d9c)
---
lib/guestfs-internal.h | 3 ++-
lib/launch-libvirt.c | 27 +++++++++++++++++++++++++--
2 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
index e24d570f5..4a19e5c6b 100644
--- a/lib/guestfs-internal.h
+++ b/lib/guestfs-internal.h
@@ -173,7 +173,8 @@ cleanup_mutex_unlock (pthread_mutex_t **ptr)
#endif
/* Place the virtio-net controller in slot 0x1e on the root bus, on normal
- * hardware with PCI. Refer to RHBZ#2034160.
+ * hardware with PCI. Necessary only before libvirt 3.8.0. Refer to
+ * RHBZ#2034160.
*/
#ifdef HAVE_LIBVIRT_BACKEND
#if defined(__arm__) || defined(__s390x__)
diff --git a/lib/launch-libvirt.c b/lib/launch-libvirt.c
index 266d88824..cc714c02e 100644
--- a/lib/launch-libvirt.c
+++ b/lib/launch-libvirt.c
@@ -1413,6 +1413,28 @@ construct_libvirt_xml_devices (guestfs_h *g,
} end_element ();
} end_element ();
+ /* Virtio-net NIC with SLIRP (= userspace) back-end, if networking is
+ * enabled. Starting with libvirt 3.8.0, we can specify the network address
+ * and prefix for SLIRP in the domain XML. Therefore, we can add the NIC
+ * via the standard <interface> element rather than <qemu:commandline>, and
+ * so libvirt can manage the PCI address of the virtio-net NIC like the PCI
+ * addresses of all other devices. Refer to RHBZ#2034160.
+ */
+ if (g->enable_network &&
+ guestfs_int_version_ge (&params->data->libvirt_version, 3, 8, 0)) {
+ start_element ("interface") {
+ attribute ("type", "user");
+ start_element ("model") {
+ attribute ("type", "virtio");
+ } end_element ();
+ start_element ("ip") {
+ attribute ("family", "ipv4");
+ attribute ("address", NETWORK_ADDRESS);
+ attribute ("prefix", NETWORK_PREFIX);
+ } end_element ();
+ } end_element ();
+ }
+
/* Libvirt adds some devices by default. Indicate to libvirt
* that we don't want them.
*/
@@ -1835,9 +1857,10 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g,
} end_element ();
/* Workaround because libvirt user networking cannot specify "net="
- * parameter.
+ * parameter. Necessary only before libvirt 3.8.0; refer to RHBZ#2034160.
*/
- if (g->enable_network) {
+ if (g->enable_network &&
+ !guestfs_int_version_ge (&params->data->libvirt_version, 3, 8, 0)) {
start_element ("qemu:arg") {
attribute ("value", "-netdev");
} end_element ();
--
2.19.1.3.g30247aa5d201

View File

@ -1,4 +1,4 @@
From ed8c7ae81786c9de45fa320fe699dbd715f52d87 Mon Sep 17 00:00:00 2001
From dabee87775ee919a8ae930ca5f03c7bb4b7616e6 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 21 Dec 2012 15:50:11 +0000
Subject: [PATCH] RHEL: Remove libguestfs live (RHBZ#798980).
@ -51,5 +51,5 @@ index 690e09b5e..919e2f248 100644
daemon/test-daemon-start.pl \
daemon/test-btrfs.pl
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -1,4 +1,4 @@
From dfd61ba102e4de9e7fb00106e0e73aa2cc4e11fd Mon Sep 17 00:00:00 2001
From 8d426264789f4b2ab5557087a39973e6fbc20983 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 18 Jul 2013 18:31:53 +0100
Subject: [PATCH] RHEL: Remove 9p APIs from RHEL (RHBZ#921710).
@ -17,7 +17,7 @@ Subject: [PATCH] RHEL: Remove 9p APIs from RHEL (RHBZ#921710).
diff --git a/daemon/9p.c b/daemon/9p.c
deleted file mode 100644
index 743a96abd..000000000
index 9a3a5cfdf..000000000
--- a/daemon/9p.c
+++ /dev/null
@@ -1,182 +0,0 @@
@ -129,14 +129,14 @@ index 743a96abd..000000000
-
- /* Check readdir didn't fail */
- if (errno != 0) {
- reply_with_perror ("readdir: /sys/block");
- reply_with_perror ("readdir: " BUS_PATH);
- closedir (dir);
- return NULL;
- }
-
- /* Close the directory handle */
- if (closedir (dir) == -1) {
- reply_with_perror ("closedir: /sys/block");
- reply_with_perror ("closedir: " BUS_PATH);
- return NULL;
- }
-
@ -228,7 +228,7 @@ index 6a97d8b0e..896314e7e 100644
daemon/actions.h
daemon/augeas.c
diff --git a/generator/actions_core.ml b/generator/actions_core.ml
index 5933282dc..c6ffa2f6a 100644
index 226fb860a..05320fcd3 100644
--- a/generator/actions_core.ml
+++ b/generator/actions_core.ml
@@ -6157,27 +6157,6 @@ This returns true iff the device exists and contains all zero bytes.
@ -325,5 +325,5 @@ index 919e2f248..e3613fec4 100644
SLOW_TESTS += bigdirs/test-big-dirs.pl
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -1,4 +1,4 @@
From 01e9dd07579f6852ab94b215c66d6d7bd0cb022d Mon Sep 17 00:00:00 2001
From cb18280888d6ab9e840b79ec93eeecf11127b6e6 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 29 Jul 2013 14:47:56 +0100
Subject: [PATCH] RHEL: Disable unsupported remote drive protocols
@ -220,7 +220,7 @@ index 21d424984..ddabeb639 100755
rm test-add-uri.out
rm test-add-uri.img
diff --git a/generator/actions_core.ml b/generator/actions_core.ml
index c6ffa2f6a..91dce1db5 100644
index 05320fcd3..155d739fe 100644
--- a/generator/actions_core.ml
+++ b/generator/actions_core.ml
@@ -297,29 +297,6 @@ F<filename> is interpreted as a local file or device.
@ -605,5 +605,5 @@ index 12937fb30..b3e4f9903 100755
-grep -sq -- '-drive file=ssh://rich@example.com/disk.img,' "$DEBUG_QEMU_FILE" || fail
-rm "$DEBUG_QEMU_FILE"
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -1,4 +1,4 @@
From 85adb673dd4705faaac3194d131f2c40bb7a1c78 Mon Sep 17 00:00:00 2001
From 1bb653591b25ac31ef773e0020cd0b0e5715d5cf Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 19 Sep 2014 13:38:20 +0100
Subject: [PATCH] RHEL: Remove User-Mode Linux (RHBZ#1144197).
@ -68,5 +68,5 @@ index 5aec50a57..8b9fcd770 100644
static int
shutdown_uml (guestfs_h *g, void *datav, int check_for_errors)
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -1,4 +1,4 @@
From 36b483bb8150a09c7fa6aecb25bf5524fe2e7b93 Mon Sep 17 00:00:00 2001
From 6372b9cd8bb2d8a183fc6d2ca4688047a0474c2f Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 7 Jul 2015 09:28:03 -0400
Subject: [PATCH] RHEL: Reject use of libguestfs-winsupport features except for
@ -65,5 +65,5 @@ index 105291dc3..5ca4f3b6d 100644
exit (EXIT_FAILURE);
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -1,31 +0,0 @@
From 5c67c45b98e8471596d5fb08da76956581ab135d Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 22 Nov 2021 15:09:41 +0000
Subject: [PATCH] xfs: Document lazy-counters setting cannot be changed in XFS
version 5
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2024022
(cherry picked from commit e7f72ab146b9c2aaee92a600a1fcbefb0202d41c)
---
generator/actions_core.ml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/generator/actions_core.ml b/generator/actions_core.ml
index 91dce1db5..155d739fe 100644
--- a/generator/actions_core.ml
+++ b/generator/actions_core.ml
@@ -7600,7 +7600,10 @@ can modify parameters.
Some of the parameters of a mounted filesystem can be examined
and modified using the C<guestfs_xfs_info> and
-C<guestfs_xfs_growfs> calls." };
+C<guestfs_xfs_growfs> calls.
+
+Beginning with XFS version 5, it is no longer possible to modify
+the lazy-counters setting (ie. C<lazycounter> parameter has no effect)." };
{ defaults with
name = "xfs_repair"; added = (1, 19, 36);
--
2.31.1

View File

@ -1,4 +1,4 @@
From 94995cf9710042557dd5ca86695be13b5ffa50d4 Mon Sep 17 00:00:00 2001
From c50bb81e40b36a74c15f9bc515a2f04a1eb00673 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 29 Jun 2021 15:29:11 +0100
Subject: [PATCH] RHEL: Create /etc/crypto-policies/back-ends/opensslcnf.config
@ -28,5 +28,5 @@ index 7076821d2..fe6497b4d 100755
# Set up kmod static-nodes (RHBZ#1011907).
--
2.31.1
2.19.1.3.g30247aa5d201

View File

@ -7,24 +7,29 @@ set -e
# it like this:
# ./copy-patches.sh
project=libguestfs
rhel_version=9.0.0
# Check we're in the right directory.
if [ ! -f libguestfs.spec ]; then
echo "$0: run this from the directory containing 'libguestfs.spec'"
if [ ! -f $project.spec ]; then
echo "$0: run this from the directory containing '$project.spec'"
exit 1
fi
git_checkout=$HOME/d/libguestfs-rhel-$rhel_version
case `id -un` in
rjones) git_checkout=$HOME/d/$project-rhel-$rhel_version ;;
lacos) git_checkout=$HOME/src/v2v/$project ;;
*) git_checkout=$HOME/d/$project-rhel-$rhel_version ;;
esac
if [ ! -d $git_checkout ]; then
echo "$0: $git_checkout does not exist"
echo "This script is only for use by the maintainer when preparing a"
echo "libguestfs release on RHEL."
echo "$project release on RHEL."
exit 1
fi
# Get the base version of libguestfs.
version=`grep '^Version:' libguestfs.spec | awk '{print $2}'`
# Get the base version of the project.
version=`grep '^Version:' $project.spec | awk '{print $2}'`
tag="v$version"
# Remove any existing patches.
@ -32,7 +37,7 @@ git rm -f [0-9]*.patch ||:
rm -f [0-9]*.patch
# Get the patches.
(cd $git_checkout; rm -f [0-9]*.patch; git format-patch -N --submodule=diff $tag)
(cd $git_checkout; rm -f [0-9]*.patch; git -c core.abbrev=9 format-patch -O/dev/null -N --submodule=diff $tag)
mv $git_checkout/[0-9]*.patch .
# Remove any not to be applied.
@ -43,7 +48,7 @@ git add [0-9]*.patch
# Print out the patch lines.
echo
echo "--- Copy the following text into libguestfs.spec file"
echo "--- Copy the following text into $project.spec file"
echo
echo "# Patches."

View File

@ -1,17 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmFMh4QRHHJpY2hAYW5u
ZXhpYS5vcmcACgkQkXOPc+G3aKBDBBAAuXwIyIs2XfkDX9W/MvNrX37pVRJugEdi
HHpw+4dn9rNSzGYBEAXJ7qTAXt6ZvNG0x/YcPrbWIuoLGtEa5AVs8tPsObMpdeKw
lYxk4GZhKwWN20RfJalolKmkes1LAfnu5+YTOUj+hPxk++u9IBs5CDTVemwP+XaN
eWyCukH9KOl/DxgsRNvjurvuGD0hAjCfKEcfVU5tMDa4e0NtCJc3G9QMBQn5gEZ/
plk1D8CBa+93ZNXapKji+8cqgcnhkl8y9tujaLIdaNHQ2Y0ptLGQWNIozWrE5iF0
9upC1kT3hJjx9+uF4dUv7kzU8By1x4AHUh9iQsVnfk6Kb+tpQDRrhF0o/dZJ0tib
Q8ADToiGEaXecMun1vsXRHOdaMSn/Nqrvkn8DRJTxqLFlE3oZLOigxxPdWwmdCtX
pe4ONpx9LrTtmROfDAKv8awNFLRXzbmUDOhY7tn/JTMKugdeOJkKBy5VvLrkM40Z
HtHsntt/B/J1FoK5TLDxcNrQo5u7MfPmnhn09AVf9OaItrh1wRCjFYCtcOt/Pxqw
xGyqsGJ32Es5r1QnY/hIjl/kkxkG6rfqRYBoU/QThmgvYxn+lM58SUOunM9aC+Ub
3taY77ge+M7ylNCx7+gJnwIF9ZltvJJ3zZ+LJ1PzcfL2ns6d/Om8/icrESS2fvFD
3w/keerUf9U=
=NsMY
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,17 @@
-----BEGIN PGP SIGNATURE-----
iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmGyO9wRHHJpY2hAYW5u
ZXhpYS5vcmcACgkQkXOPc+G3aKBl+RAAoxqpUWTEiXxwyWWhW0IotI5xyEdyrkL6
+po1pqtEXzcFeCHX+lB86C9nkolmFEDfz1wnlNVbz1La35Zdkw1gCD96Fx3/s4xl
s7pZ9073FauSo4IjseWAPcFj3SF4aEeK8xvpOQaq+rcA3Zmg5vZJCqW0xnEGqeCO
UTgmKPgmg2NJaUnUq7TRI8AxNDElD+MetV+olywjJG2QETSFP65ZwdppT8fUZvl/
W4s38gvHAGLQgKZL7MudQXTDUkGD7rThr3IKGQP8UJGr+IpR4MxxkkDAndeb37ps
6b+s3popuJRwXaSw7gPPGut5jfdJNBJ5KIYqxxWu+fmRTkXD+qoDR1AuJLZlCO7E
Yp9X9rTZh55wZk8NetG0XNDkyoBqJoBkoL3h5wvHOTOoYX4KfjL5YxHbjuhMJ3O1
O0JiwtrqmkQ3c4HzmMJEBctj3ZuhdL5d+MJH7VtTjKy95FJlmEGPRa1DYoaeW6lv
tVE/zEv6dsy1dpzVgMM/lugTTs2NRwNhLo843OpVCQjZfDk0fEOcWo+0sW0tca05
EdnocDI8bAW98dLAla6RJwMvBaD6Y/RtutMDO9AY7hVFDeIc1bYBHPtvDSYwd9ul
hB849Q3dtdEeVk3+5rsxZllXowltnfe4KxvkII4NHJVHp5uZZruHHF4pNvKmAFD1
B9VPVX4vIgw=
=UAq6
-----END PGP SIGNATURE-----

View File

@ -56,8 +56,8 @@
Summary: Access and modify virtual machine disk images
Name: libguestfs
Epoch: 1
Version: 1.46.0
Release: 5%{?dist}
Version: 1.46.1
Release: 2%{?dist}
License: LGPLv2+
# Build only for architectures that have a kernel
@ -95,17 +95,18 @@ Source8: copy-patches.sh
# https://github.com/libguestfs/libguestfs/commits/rhel-9.0.0
# Patches.
Patch0001: 0001-Go-bindings-fix-C-array-of-strings-char-allocation.patch
Patch0002: 0002-daemon-inspect_fs_unix-recognize-modern-Pardus-GNU-L.patch
Patch0003: 0003-m4-guestfs-ocaml.m4-Fix-deprecated-warning-format.patch
Patch0004: 0004-RHEL-Remove-libguestfs-live-RHBZ-798980.patch
Patch0005: 0005-RHEL-Remove-9p-APIs-from-RHEL-RHBZ-921710.patch
Patch0006: 0006-RHEL-Disable-unsupported-remote-drive-protocols-RHBZ.patch
Patch0007: 0007-RHEL-Remove-User-Mode-Linux-RHBZ-1144197.patch
Patch0008: 0008-RHEL-Reject-use-of-libguestfs-winsupport-features-ex.patch
Patch0009: 0009-RHEL-Create-etc-crypto-policies-back-ends-opensslcnf.patch
Patch0010: 0010-daemon-inspection-Add-support-for-Kylin-RHBZ-1995391.patch
Patch0011: 0011-xfs-Document-lazy-counters-setting-cannot-be-changed.patch
Patch0001: 0001-daemon-inspect_fs_unix-recognize-modern-Pardus-GNU-Linux-releases.patch
Patch0002: 0002-daemon-inspection-Add-support-for-Kylin-RHBZ-1995391.patch
Patch0003: 0003-Add-detection-support-for-Rocky-Linux-CentOS-RHEL-like.patch
Patch0004: 0004-launch-libvirt-place-our-virtio-net-pci-device-in-slot-0x1e.patch
Patch0005: 0005-lib-extract-NETWORK_ADDRESS-and-NETWORK_PREFIX-as-macros.patch
Patch0006: 0006-launch-libvirt-add-virtio-net-via-the-standard-interface-element.patch
Patch0007: 0007-RHEL-Remove-libguestfs-live-RHBZ-798980.patch
Patch0008: 0008-RHEL-Remove-9p-APIs-from-RHEL-RHBZ-921710.patch
Patch0009: 0009-RHEL-Disable-unsupported-remote-drive-protocols-RHBZ-962113.patch
Patch0010: 0010-RHEL-Remove-User-Mode-Linux-RHBZ-1144197.patch
Patch0011: 0011-RHEL-Reject-use-of-libguestfs-winsupport-features-except-for-virt-tools-RHBZ-1240276.patch
Patch0012: 0012-RHEL-Create-etc-crypto-policies-back-ends-opensslcnf.config.patch
%if 0%{patches_touch_autotools}
BuildRequires: autoconf, automake, libtool, gettext-devel
@ -1145,19 +1146,23 @@ rm ocaml/html/.gitignore
%changelog
* Tue Nov 23 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.46.0-5
* Thu Dec 23 2021 Laszlo Ersek <lersek@redhat.com> - 1:1.46.1-2
- Add detection support for Rocky Linux
resolves: rhbz#2030709
- Resolve conflict between manual and libvirt-assigned PCI addresses
resolves: rhbz#2034160
* Thu Dec 09 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.46.1-1
- Rebase to new stable branch version 1.46.1
resolves: rhbz#2011711
- Add --enable-appliance-format-auto
- Add support for Kylin
- Document lazy-counters setting cannot be changed in XFS version 5
resolves: rhbz#2025944, rhbz#1995391, rhbz#2024022
* Fri Oct 29 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.46.0-4
- Require libvirt-daemon-driver-storage-core
resolves: rhbz#2018358
* Fri Oct 08 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.46.0-1
- Rebase to new stable branch version 1.46.0
resolves: rhbz#2011711
- Fix usage of strerror_r which caused corrupted error messages
resolves: rhbz#2030396
* Tue Sep 14 2021 Richard W.M. Jones <rjones@redhat.com> - 1:1.45.6-14
- Specify backing format for qemu 6.1