Rebase to guestfs-tools 1.51.6
Implement --key all:... resolves: RHEL-19030 Fix crash because of off-by-one error resolves: RHEL-19062
This commit is contained in:
parent
dbcc9103ca
commit
2bd1392fb7
26
0001-Update-common-submodule.patch
Normal file
26
0001-Update-common-submodule.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 28ecb8693bbded3e1c70c1baa57f3498a6b8127e Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Sat, 9 Dec 2023 12:59:13 +0000
|
||||||
|
Subject: [PATCH] Update common submodule
|
||||||
|
|
||||||
|
Pick up this bug fix:
|
||||||
|
|
||||||
|
mltools/libosinfo-c.c: Fix off-by-one error
|
||||||
|
---
|
||||||
|
common | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Submodule common cd29aee91..0dba002c2:
|
||||||
|
diff --git a/common/mltools/libosinfo-c.c b/common/mltools/libosinfo-c.c
|
||||||
|
index 93357fd91..a48c8989f 100644
|
||||||
|
--- a/common/mltools/libosinfo-c.c
|
||||||
|
+++ b/common/mltools/libosinfo-c.c
|
||||||
|
@@ -296,7 +296,7 @@ v2v_osinfo_os_get_device_drivers (value osv)
|
||||||
|
|
||||||
|
driver = OSINFO_DEVICE_DRIVER(osinfo_list_get_nth (OSINFO_LIST(list), i));
|
||||||
|
|
||||||
|
- vi = caml_alloc (6, 0);
|
||||||
|
+ vi = caml_alloc (7, 0);
|
||||||
|
str = osinfo_device_driver_get_architecture (driver);
|
||||||
|
copyv = caml_copy_string (str);
|
||||||
|
Store_field (vi, 0, copyv);
|
@ -1,4 +1,4 @@
|
|||||||
From b4f4e1906b8de6286889690047e35969d2dfaa91 Mon Sep 17 00:00:00 2001
|
From 1ea6c78c7fc6a3ebbe818409ba41be6d1f178381 Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Tue, 7 Jul 2015 09:28:03 -0400
|
Date: Tue, 7 Jul 2015 09:28:03 -0400
|
||||||
Subject: [PATCH] RHEL: Reject use of libguestfs-winsupport features except for
|
Subject: [PATCH] RHEL: Reject use of libguestfs-winsupport features except for
|
@ -1,4 +1,4 @@
|
|||||||
From 01ebf5d7d5656b45168de9081906522a32008080 Mon Sep 17 00:00:00 2001
|
From 3ad2b829e42b535a7a6f01dda06cc9c9d4f09664 Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Mon, 21 Nov 2022 13:03:22 +0000
|
Date: Mon, 21 Nov 2022 13:03:22 +0000
|
||||||
Subject: [PATCH] RHEL: builder: Disable opensuse repository
|
Subject: [PATCH] RHEL: builder: Disable opensuse repository
|
File diff suppressed because it is too large
Load Diff
@ -1,480 +0,0 @@
|
|||||||
From ec06f62df5340cd0a9466a532aa9806fb0e2e560 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Sat, 18 Feb 2023 12:04:04 +0000
|
|
||||||
Subject: [PATCH] drivers: Look up vendor and device names in PCI and USB IDs
|
|
||||||
database
|
|
||||||
|
|
||||||
(cherry picked from commit ca21ee4918cd7d4472bd875a495752a03a03fa87)
|
|
||||||
---
|
|
||||||
.gitignore | 1 +
|
|
||||||
configure.ac | 1 +
|
|
||||||
drivers/Makefile.am | 6 +-
|
|
||||||
drivers/drivers.ml | 31 +++++
|
|
||||||
drivers/hwdata.ml | 187 +++++++++++++++++++++++++++
|
|
||||||
drivers/hwdata.mli | 31 +++++
|
|
||||||
drivers/hwdata_config.ml.in | 26 ++++
|
|
||||||
drivers/hwdata_config.mli | 35 +++++
|
|
||||||
drivers/test-virt-drivers-windows.sh | 13 +-
|
|
||||||
m4/guestfs-libraries.m4 | 3 +
|
|
||||||
po/POTFILES-ml | 2 +
|
|
||||||
11 files changed, 333 insertions(+), 3 deletions(-)
|
|
||||||
create mode 100644 drivers/hwdata.ml
|
|
||||||
create mode 100644 drivers/hwdata.mli
|
|
||||||
create mode 100644 drivers/hwdata_config.ml.in
|
|
||||||
create mode 100644 drivers/hwdata_config.mli
|
|
||||||
|
|
||||||
diff --git a/.gitignore b/.gitignore
|
|
||||||
index b0ada2e3c..c0ca330a3 100644
|
|
||||||
--- a/.gitignore
|
|
||||||
+++ b/.gitignore
|
|
||||||
@@ -95,6 +95,7 @@ Makefile.in
|
|
||||||
/customize/virt-customize
|
|
||||||
/df/virt-df
|
|
||||||
/drivers/.depend
|
|
||||||
+/drivers/hwdata_config.ml
|
|
||||||
/drivers/virt-drivers
|
|
||||||
/diff/virt-diff
|
|
||||||
/edit/virt-edit
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 34c66b80e..e9fadcc9b 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -138,6 +138,7 @@ AC_CONFIG_FILES([Makefile
|
|
||||||
df/Makefile
|
|
||||||
diff/Makefile
|
|
||||||
drivers/Makefile
|
|
||||||
+ drivers/hwdata_config.ml
|
|
||||||
edit/Makefile
|
|
||||||
format/Makefile
|
|
||||||
get-kernel/Makefile
|
|
||||||
diff --git a/drivers/Makefile.am b/drivers/Makefile.am
|
|
||||||
index d27fc2e27..7e0ef659c 100644
|
|
||||||
--- a/drivers/Makefile.am
|
|
||||||
+++ b/drivers/Makefile.am
|
|
||||||
@@ -27,9 +27,13 @@ EXTRA_DIST = \
|
|
||||||
virt-drivers.pod
|
|
||||||
|
|
||||||
SOURCES_MLI = \
|
|
||||||
- drivers.mli
|
|
||||||
+ drivers.mli \
|
|
||||||
+ hwdata_config.mli \
|
|
||||||
+ hwdata.mli
|
|
||||||
|
|
||||||
SOURCES_ML = \
|
|
||||||
+ hwdata_config.ml \
|
|
||||||
+ hwdata.ml \
|
|
||||||
drivers.ml
|
|
||||||
|
|
||||||
SOURCES_C = \
|
|
||||||
diff --git a/drivers/drivers.ml b/drivers/drivers.ml
|
|
||||||
index 57cfb557c..f02165fa4 100644
|
|
||||||
--- a/drivers/drivers.ml
|
|
||||||
+++ b/drivers/drivers.ml
|
|
||||||
@@ -235,8 +235,14 @@ and windows_hardware_to_xml = function
|
|
||||||
(Option.map (fun v -> ("class", sprintf "%06LX" v)) pci_class);
|
|
||||||
List.may_push_back attrs
|
|
||||||
(Option.map (fun v -> ("vendor", sprintf "%04LX" v)) pci_vendor);
|
|
||||||
+ let vendorname = get_pci_vendor pci_vendor in
|
|
||||||
+ List.may_push_back attrs
|
|
||||||
+ (Option.map (fun v -> "vendorname", v) vendorname);
|
|
||||||
List.may_push_back attrs
|
|
||||||
(Option.map (fun v -> ("device", sprintf "%04LX" v)) pci_device);
|
|
||||||
+ let devicename = get_pci_device pci_vendor pci_device in
|
|
||||||
+ List.may_push_back attrs
|
|
||||||
+ (Option.map (fun v -> "devicename", v) devicename);
|
|
||||||
List.may_push_back attrs
|
|
||||||
(Option.map (fun v -> ("subsystem", sprintf "%08LX" v)) pci_subsys);
|
|
||||||
List.may_push_back attrs
|
|
||||||
@@ -261,8 +267,14 @@ and windows_hardware_to_xml = function
|
|
||||||
let attrs = ref [] in
|
|
||||||
List.may_push_back attrs
|
|
||||||
(Option.map (fun v -> ("vendor", sprintf "%04LX" v)) usb_vendor);
|
|
||||||
+ let vendorname = get_usb_vendor usb_vendor in
|
|
||||||
+ List.may_push_back attrs
|
|
||||||
+ (Option.map (fun v -> "vendorname", v) vendorname);
|
|
||||||
List.may_push_back attrs
|
|
||||||
(Option.map (fun v -> ("product", sprintf "%04LX" v)) usb_product);
|
|
||||||
+ let productname = get_usb_device usb_vendor usb_product in
|
|
||||||
+ List.may_push_back attrs
|
|
||||||
+ (Option.map (fun v -> "productname", v) productname);
|
|
||||||
List.may_push_back attrs
|
|
||||||
(Option.map (fun v -> ("revision", sprintf "%02LX" v)) usb_rev);
|
|
||||||
List.may_push_back attrs
|
|
||||||
@@ -272,6 +284,25 @@ and windows_hardware_to_xml = function
|
|
||||||
| Other path ->
|
|
||||||
Comment (sprintf "unknown DeviceId: %s" (String.concat "\\" path))
|
|
||||||
|
|
||||||
+and get_pci_vendor v = get_hwdata'1 Hwdata.pci_vendor v
|
|
||||||
+and get_pci_device v d = get_hwdata'2 Hwdata.pci_device v d
|
|
||||||
+and get_usb_vendor v = get_hwdata'1 Hwdata.usb_vendor v
|
|
||||||
+and get_usb_device v d = get_hwdata'2 Hwdata.usb_device v d
|
|
||||||
+
|
|
||||||
+and get_hwdata'1 f = function
|
|
||||||
+ | Some i64 when i64 >= 0_L && i64 <= 0xffff_L ->
|
|
||||||
+ let i32 = Int64.to_int32 i64 in
|
|
||||||
+ f i32
|
|
||||||
+ | _ -> None
|
|
||||||
+
|
|
||||||
+and get_hwdata'2 f v d =
|
|
||||||
+ match v, d with
|
|
||||||
+ | Some v64, Some d64 when v64 >= 0_L && v64 <= 0xffff_L &&
|
|
||||||
+ d64 >= 0_L && d64 <= 0xffff_L ->
|
|
||||||
+ let v32 = Int64.to_int32 v64 and d32 = Int64.to_int32 d64 in
|
|
||||||
+ f v32 d32
|
|
||||||
+ | _ -> None
|
|
||||||
+
|
|
||||||
(* Main program. *)
|
|
||||||
let main () =
|
|
||||||
let add, ks = parse_cmdline () in
|
|
||||||
diff --git a/drivers/hwdata.ml b/drivers/hwdata.ml
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000..4b46eff68
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/hwdata.ml
|
|
||||||
@@ -0,0 +1,187 @@
|
|
||||||
+(* virt-drivers
|
|
||||||
+ * Copyright (C) 2009-2023 Red Hat Inc.
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License as published by
|
|
||||||
+ * the Free Software Foundation; either version 2 of the License, or
|
|
||||||
+ * (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU General Public License along
|
|
||||||
+ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
+ *)
|
|
||||||
+
|
|
||||||
+open Std_utils
|
|
||||||
+open Tools_utils
|
|
||||||
+open Common_gettext.Gettext
|
|
||||||
+
|
|
||||||
+open Printf
|
|
||||||
+open Scanf
|
|
||||||
+
|
|
||||||
+module DBKey = struct
|
|
||||||
+ type t =
|
|
||||||
+ | Vendor of int32
|
|
||||||
+ | Device of int32 * int32
|
|
||||||
+ let compare = compare
|
|
||||||
+end
|
|
||||||
+module DB = Map.Make (DBKey)
|
|
||||||
+
|
|
||||||
+let is_4_digit_hex id =
|
|
||||||
+ String.length id = 4 &&
|
|
||||||
+ Char.isxdigit id.[0] &&
|
|
||||||
+ Char.isxdigit id.[1] &&
|
|
||||||
+ Char.isxdigit id.[2] &&
|
|
||||||
+ Char.isxdigit id.[3]
|
|
||||||
+let hex_to_int32 id = sscanf id "%lx" identity
|
|
||||||
+
|
|
||||||
+(* Loads one of the [*.ids] files, returning the entries as a
|
|
||||||
+ * 3 level map. Returns [None] if the file could not be opened
|
|
||||||
+ * or parsed.
|
|
||||||
+ *)
|
|
||||||
+let load filename =
|
|
||||||
+ try
|
|
||||||
+ let lines = read_whole_file filename in
|
|
||||||
+ let lines = String.lines_split lines in
|
|
||||||
+
|
|
||||||
+ (* This loop drops blank lines and comments, splits the fields of
|
|
||||||
+ * the database, and returns [(lineno, indent, key, label) list].
|
|
||||||
+ *)
|
|
||||||
+ let rec loop lineno acc = function
|
|
||||||
+ | [] -> List.rev acc
|
|
||||||
+ (* Blank lines. *)
|
|
||||||
+ | "" :: lines ->
|
|
||||||
+ loop (lineno+1) acc lines
|
|
||||||
+ (* Note that # only starts a comment at the beginning of the line. *)
|
|
||||||
+ | comment :: lines when String.is_prefix comment "#" ->
|
|
||||||
+ loop (lineno+1) acc lines
|
|
||||||
+ (* Otherwise its some data. *)
|
|
||||||
+ | line :: lines ->
|
|
||||||
+ let len = String.length line in
|
|
||||||
+ let indent =
|
|
||||||
+ let rec counttabs i =
|
|
||||||
+ if i < len && line.[i] = '\t' then 1 + counttabs (i+1) else 0
|
|
||||||
+ in
|
|
||||||
+ counttabs 0 in
|
|
||||||
+ let line = String.sub line indent (len - indent) in
|
|
||||||
+
|
|
||||||
+ let n = String.cspan line " \t" in
|
|
||||||
+ let key, label = String.break n line in
|
|
||||||
+ let n = String.span label " \t" in
|
|
||||||
+ let _, label = String.break n label in
|
|
||||||
+
|
|
||||||
+ let acc =
|
|
||||||
+ if key = "" && label = "" then acc
|
|
||||||
+ else (lineno, indent, key, label) :: acc in
|
|
||||||
+
|
|
||||||
+ loop (lineno+1) acc lines
|
|
||||||
+ in
|
|
||||||
+ let lines = loop 1 [] lines in
|
|
||||||
+
|
|
||||||
+ (* Since the format is essentially a space-saving one where
|
|
||||||
+ * vendor name
|
|
||||||
+ * \t device name
|
|
||||||
+ * is short for:
|
|
||||||
+ * vendor name
|
|
||||||
+ * vendor device name
|
|
||||||
+ * pull the fields from previous lines down, resulting in
|
|
||||||
+ * a flat list.
|
|
||||||
+ *)
|
|
||||||
+ let rec loop keys acc = function
|
|
||||||
+ | [] -> List.rev acc
|
|
||||||
+ | (lineno, indent, key, label) :: lines ->
|
|
||||||
+ let prefix = List.take indent keys in
|
|
||||||
+ let keys = prefix @ [ key ] in
|
|
||||||
+ let acc = (lineno, keys, label) :: acc in
|
|
||||||
+ loop keys acc lines
|
|
||||||
+ in
|
|
||||||
+ let lines = loop [] [] lines in
|
|
||||||
+
|
|
||||||
+ (*
|
|
||||||
+ List.iter (
|
|
||||||
+ fun (lineno, keys, label) ->
|
|
||||||
+ eprintf "[%s] -> %s # line %d\n"
|
|
||||||
+ (String.concat ";" keys) label lineno
|
|
||||||
+ ) lines;
|
|
||||||
+ *)
|
|
||||||
+
|
|
||||||
+ (* Now we can finally process the database.
|
|
||||||
+ *
|
|
||||||
+ * We currently ignore the [C] (class) and other records
|
|
||||||
+ * that appear at the end of the file. We might want to
|
|
||||||
+ * try parsing these in future. It will require changes to
|
|
||||||
+ * the code above because the label isn't parsed right.
|
|
||||||
+ *)
|
|
||||||
+ let db =
|
|
||||||
+ List.fold_left (
|
|
||||||
+ fun db (lineno, keys, label) ->
|
|
||||||
+ let loc = filename, lineno in
|
|
||||||
+ match keys with
|
|
||||||
+ | [vendor] when is_4_digit_hex vendor ->
|
|
||||||
+ let vendor = hex_to_int32 vendor in
|
|
||||||
+ DB.add (Vendor vendor) (label, loc) db
|
|
||||||
+ | [vendor; device] when is_4_digit_hex vendor &&
|
|
||||||
+ is_4_digit_hex device ->
|
|
||||||
+ let vendor = hex_to_int32 vendor in
|
|
||||||
+ let device = hex_to_int32 device in
|
|
||||||
+ DB.add (Device (vendor, device)) (label, loc) db
|
|
||||||
+ | _ ->
|
|
||||||
+ db
|
|
||||||
+ ) DB.empty lines in
|
|
||||||
+
|
|
||||||
+ Some db
|
|
||||||
+ with exn ->
|
|
||||||
+ warning (f_"hwdata: %s: %s") filename (Printexc.to_string exn);
|
|
||||||
+ None
|
|
||||||
+
|
|
||||||
+(* Lazily load the PCI database, if present. *)
|
|
||||||
+let pci_db =
|
|
||||||
+ let filename = Hwdata_config.pci_ids in
|
|
||||||
+ lazy (match filename with None -> None | Some filename -> load filename)
|
|
||||||
+
|
|
||||||
+(* Look up PCI vendor and device ID. *)
|
|
||||||
+let pci_vendor vendor =
|
|
||||||
+ let db = Lazy.force pci_db in
|
|
||||||
+ match db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some db ->
|
|
||||||
+ match DB.find_opt (Vendor vendor) db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some (label, _) -> Some label
|
|
||||||
+
|
|
||||||
+let pci_device vendor device =
|
|
||||||
+ let db = Lazy.force pci_db in
|
|
||||||
+ match db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some db ->
|
|
||||||
+ match DB.find_opt (Device (vendor, device)) db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some (label, _) -> Some label
|
|
||||||
+
|
|
||||||
+(* Lazily load the USB database, if present. *)
|
|
||||||
+let usb_db =
|
|
||||||
+ let filename = Hwdata_config.usb_ids in
|
|
||||||
+ lazy (match filename with None -> None | Some filename -> load filename)
|
|
||||||
+
|
|
||||||
+(* Look up USB vendor and device ID. *)
|
|
||||||
+let usb_vendor vendor =
|
|
||||||
+ let db = Lazy.force usb_db in
|
|
||||||
+ match db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some db ->
|
|
||||||
+ match DB.find_opt (Vendor vendor) db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some (label, _) -> Some label
|
|
||||||
+
|
|
||||||
+let usb_device vendor device =
|
|
||||||
+ let db = Lazy.force usb_db in
|
|
||||||
+ match db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some db ->
|
|
||||||
+ match DB.find_opt (Device (vendor, device)) db with
|
|
||||||
+ | None -> None
|
|
||||||
+ | Some (label, _) -> Some label
|
|
||||||
diff --git a/drivers/hwdata.mli b/drivers/hwdata.mli
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000..972dfe1f6
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/hwdata.mli
|
|
||||||
@@ -0,0 +1,31 @@
|
|
||||||
+(* virt-drivers
|
|
||||||
+ * Copyright (C) 2013-2023 Red Hat Inc.
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License as published by
|
|
||||||
+ * the Free Software Foundation; either version 2 of the License, or
|
|
||||||
+ * (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU General Public License along
|
|
||||||
+ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
+ *)
|
|
||||||
+
|
|
||||||
+(** Look up PCI and USB vendor and device IDs. *)
|
|
||||||
+
|
|
||||||
+val pci_vendor : int32 -> string option
|
|
||||||
+(** Look up the PCI vendor ID. If found, return the name. *)
|
|
||||||
+
|
|
||||||
+val pci_device : int32 -> int32 -> string option
|
|
||||||
+(** Look up the PCI vendor & device ID. If found, return the name. *)
|
|
||||||
+
|
|
||||||
+val usb_vendor : int32 -> string option
|
|
||||||
+(** Look up the USB vendor ID. If found, return the name. *)
|
|
||||||
+
|
|
||||||
+val usb_device : int32 -> int32 -> string option
|
|
||||||
+(** Look up the USB vendor & device ID. If found, return the name. *)
|
|
||||||
diff --git a/drivers/hwdata_config.ml.in b/drivers/hwdata_config.ml.in
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000..fa792c086
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/hwdata_config.ml.in
|
|
||||||
@@ -0,0 +1,26 @@
|
|
||||||
+(* virt-drivers
|
|
||||||
+ * @configure_input@
|
|
||||||
+ * Copyright (C) 2009-2023 Red Hat Inc.
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License as published by
|
|
||||||
+ * the Free Software Foundation; either version 2 of the License, or
|
|
||||||
+ * (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU General Public License along
|
|
||||||
+ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
+ *)
|
|
||||||
+
|
|
||||||
+open Std_utils
|
|
||||||
+
|
|
||||||
+let dir = "@HWDATA_PKGDATADIR@"
|
|
||||||
+let dir = if dir = "" then None else Some dir
|
|
||||||
+
|
|
||||||
+let pci_ids = Option.map (fun d -> d // "pci.ids") dir
|
|
||||||
+let usb_ids = Option.map (fun d -> d // "usb.ids") dir
|
|
||||||
diff --git a/drivers/hwdata_config.mli b/drivers/hwdata_config.mli
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000..877e9e28a
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/hwdata_config.mli
|
|
||||||
@@ -0,0 +1,35 @@
|
|
||||||
+(* virt-drivers
|
|
||||||
+ * Copyright (C) 2013-2023 Red Hat Inc.
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License as published by
|
|
||||||
+ * the Free Software Foundation; either version 2 of the License, or
|
|
||||||
+ * (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU General Public License along
|
|
||||||
+ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
+ *)
|
|
||||||
+
|
|
||||||
+val dir : string option
|
|
||||||
+(** [pkgdatadir] variable defined by hwdata.pc
|
|
||||||
+
|
|
||||||
+ This is the name of the directory containing [pci.ids] and
|
|
||||||
+ related files which contain the PCI IDs. *)
|
|
||||||
+
|
|
||||||
+val pci_ids : string option
|
|
||||||
+(** Path to the [pci.ids] file.
|
|
||||||
+
|
|
||||||
+ Note at runtime this is an optional dependency, so it may
|
|
||||||
+ not at exist even if not [None]. *)
|
|
||||||
+
|
|
||||||
+val usb_ids : string option
|
|
||||||
+(** Path to the [usb.ids] file.
|
|
||||||
+
|
|
||||||
+ Note at runtime this is an optional dependency, so it may
|
|
||||||
+ not at exist even if not [None]. *)
|
|
||||||
diff --git a/drivers/test-virt-drivers-windows.sh b/drivers/test-virt-drivers-windows.sh
|
|
||||||
index df3f36c64..4131f6e5e 100755
|
|
||||||
--- a/drivers/test-virt-drivers-windows.sh
|
|
||||||
+++ b/drivers/test-virt-drivers-windows.sh
|
|
||||||
@@ -22,9 +22,18 @@ $TEST_FUNCTIONS
|
|
||||||
skip_if_skipped
|
|
||||||
skip_unless_phony_guest windows.img
|
|
||||||
|
|
||||||
-rm -f actual-windows.xml
|
|
||||||
+rm -f actual-windows.xml actual-windows.xml.bak
|
|
||||||
|
|
||||||
$VG virt-drivers --format=raw -a ../test-data/phony-guests/windows.img > actual-windows.xml
|
|
||||||
+
|
|
||||||
+# We can't predict if hwdata is available, so we don't know if
|
|
||||||
+# vendorname and devicename fields will be present. If present,
|
|
||||||
+# remove them before comparison.
|
|
||||||
+mv actual-windows.xml actual-windows.xml.bak
|
|
||||||
+sed -e "s/ vendorname='\([^']*\)'//g" \
|
|
||||||
+ -e "s/ devicename='\([^']*\)'//g" \
|
|
||||||
+ < actual-windows.xml.bak > actual-windows.xml
|
|
||||||
+
|
|
||||||
diff -ur -I "generated by" expected-windows.xml actual-windows.xml
|
|
||||||
|
|
||||||
-rm actual-windows.xml
|
|
||||||
+rm actual-windows.xml actual-windows.xml.bak
|
|
||||||
diff --git a/m4/guestfs-libraries.m4 b/m4/guestfs-libraries.m4
|
|
||||||
index 2d252bf9e..32f93afda 100644
|
|
||||||
--- a/m4/guestfs-libraries.m4
|
|
||||||
+++ b/m4/guestfs-libraries.m4
|
|
||||||
@@ -169,3 +169,6 @@ PKG_CHECK_MODULES([JANSSON], [jansson >= 2.7])
|
|
||||||
|
|
||||||
dnl Check for libosinfo (mandatory)
|
|
||||||
PKG_CHECK_MODULES([LIBOSINFO], [libosinfo-1.0])
|
|
||||||
+
|
|
||||||
+dnl Check for hwdata directory (containing pci.ids) (optional, for virt-drivers)
|
|
||||||
+PKG_CHECK_VAR([HWDATA_PKGDATADIR], [hwdata], [pkgdatadir])
|
|
||||||
diff --git a/po/POTFILES-ml b/po/POTFILES-ml
|
|
||||||
index 73984796f..7632f374d 100644
|
|
||||||
--- a/po/POTFILES-ml
|
|
||||||
+++ b/po/POTFILES-ml
|
|
||||||
@@ -79,6 +79,8 @@ dib/output_format_tgz.ml
|
|
||||||
dib/output_format_vhd.ml
|
|
||||||
dib/utils.ml
|
|
||||||
drivers/drivers.ml
|
|
||||||
+drivers/hwdata.ml
|
|
||||||
+drivers/hwdata_config.ml
|
|
||||||
get-kernel/get_kernel.ml
|
|
||||||
resize/resize.ml
|
|
||||||
sparsify/cmdline.ml
|
|
@ -1,203 +0,0 @@
|
|||||||
From a55dcd5162e51a952ee6c23c4a89c1b098f304f4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Date: Fri, 19 May 2023 17:55:05 +0200
|
|
||||||
Subject: [PATCH] update common submodule
|
|
||||||
|
|
||||||
Laszlo Ersek (2):
|
|
||||||
options/keys: key_store_import_key(): un-constify "key" parameter
|
|
||||||
options/keys: introduce unescape_device_mapper_lvm()
|
|
||||||
|
|
||||||
Richard W.M. Jones (1):
|
|
||||||
mlcustomize/SELinux_relabel.ml: Use Array.mem
|
|
||||||
|
|
||||||
Roman Kagan (1):
|
|
||||||
mlcustomize: skip SELinux relabeling if it's disabled
|
|
||||||
|
|
||||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2168506
|
|
||||||
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Message-Id: <20230519155507.369494-2-lersek@redhat.com>
|
|
||||||
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
|
|
||||||
(cherry picked from commit 4ddcae7e8543d2a63d907729d5b0d22f659d071f)
|
|
||||||
---
|
|
||||||
common | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Submodule common 70c10a079..b636c3f20:
|
|
||||||
diff --git a/common/options/options.h b/common/options/options.h
|
|
||||||
index 94573ee06..94e8b9eef 100644
|
|
||||||
--- a/common/options/options.h
|
|
||||||
+++ b/common/options/options.h
|
|
||||||
@@ -169,7 +169,8 @@ extern struct matching_key *get_keys (struct key_store *ks, const char *device,
|
|
||||||
const char *uuid, size_t *nr_matches);
|
|
||||||
extern void free_keys (struct matching_key *keys, size_t nr_matches);
|
|
||||||
extern struct key_store *key_store_add_from_selector (struct key_store *ks, const char *selector);
|
|
||||||
-extern struct key_store *key_store_import_key (struct key_store *ks, const struct key_store_key *key);
|
|
||||||
+extern struct key_store *key_store_import_key (struct key_store *ks,
|
|
||||||
+ struct key_store_key *key);
|
|
||||||
extern bool key_store_requires_network (const struct key_store *ks);
|
|
||||||
extern void free_key_store (struct key_store *ks);
|
|
||||||
|
|
||||||
diff --git a/common/mlcustomize/SELinux_relabel.ml b/common/mlcustomize/SELinux_relabel.ml
|
|
||||||
index 5ecf7bd7e..2f3a09bf7 100644
|
|
||||||
--- a/common/mlcustomize/SELinux_relabel.ml
|
|
||||||
+++ b/common/mlcustomize/SELinux_relabel.ml
|
|
||||||
@@ -24,10 +24,6 @@ open Printf
|
|
||||||
|
|
||||||
module G = Guestfs
|
|
||||||
|
|
||||||
-(* Simple reimplementation of Array.mem, available only with OCaml >= 4.03. *)
|
|
||||||
-let array_find a l =
|
|
||||||
- List.mem a (Array.to_list l)
|
|
||||||
-
|
|
||||||
let rec relabel (g : G.guestfs) =
|
|
||||||
(* Is the guest using SELinux? (Otherwise this is a no-op). *)
|
|
||||||
if is_selinux_guest g then (
|
|
||||||
@@ -59,14 +55,24 @@ and use_setfiles g =
|
|
||||||
g#aug_load ();
|
|
||||||
debug_augeas_errors g;
|
|
||||||
|
|
||||||
+ let config_path = "/files/etc/selinux/config" in
|
|
||||||
+ let config_keys = g#aug_ls config_path in
|
|
||||||
+ (* SELinux may be disabled via a setting in config file *)
|
|
||||||
+ let selinux_disabled =
|
|
||||||
+ let selinuxmode_path = config_path ^ "/SELINUX" in
|
|
||||||
+ if Array.mem selinuxmode_path config_keys then
|
|
||||||
+ g#aug_get selinuxmode_path = "disabled"
|
|
||||||
+ else
|
|
||||||
+ false in
|
|
||||||
+ if selinux_disabled then
|
|
||||||
+ failwith "selinux disabled";
|
|
||||||
+
|
|
||||||
(* Get the SELinux policy name, eg. "targeted", "minimum".
|
|
||||||
* Use "targeted" if not specified, just like libselinux does.
|
|
||||||
*)
|
|
||||||
let policy =
|
|
||||||
- let config_path = "/files/etc/selinux/config" in
|
|
||||||
let selinuxtype_path = config_path ^ "/SELINUXTYPE" in
|
|
||||||
- let keys = g#aug_ls config_path in
|
|
||||||
- if array_find selinuxtype_path keys then
|
|
||||||
+ if Array.mem selinuxtype_path config_keys then
|
|
||||||
g#aug_get selinuxtype_path
|
|
||||||
else
|
|
||||||
"targeted" in
|
|
||||||
diff --git a/common/options/keys.c b/common/options/keys.c
|
|
||||||
index 48f1bc7c7..52b273690 100644
|
|
||||||
--- a/common/options/keys.c
|
|
||||||
+++ b/common/options/keys.c
|
|
||||||
@@ -260,8 +260,107 @@ key_store_add_from_selector (struct key_store *ks, const char *selector)
|
|
||||||
return key_store_import_key (ks, &key);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Turn /dev/mapper/VG-LV into /dev/VG/LV, in-place. */
|
|
||||||
+static void
|
|
||||||
+unescape_device_mapper_lvm (char *id)
|
|
||||||
+{
|
|
||||||
+ static const char dev[] = "/dev/", dev_mapper[] = "/dev/mapper/";
|
|
||||||
+ const char *input_start;
|
|
||||||
+ char *output;
|
|
||||||
+ enum { M_SCAN, M_FILL, M_DONE } mode;
|
|
||||||
+
|
|
||||||
+ if (!STRPREFIX (id, dev_mapper))
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ /* Start parsing "VG-LV" from "id" after "/dev/mapper/". */
|
|
||||||
+ input_start = id + (sizeof dev_mapper - 1);
|
|
||||||
+
|
|
||||||
+ /* Start writing the unescaped "VG/LV" output after "/dev/". */
|
|
||||||
+ output = id + (sizeof dev - 1);
|
|
||||||
+
|
|
||||||
+ for (mode = M_SCAN; mode < M_DONE; ++mode) {
|
|
||||||
+ char c;
|
|
||||||
+ const char *input = input_start;
|
|
||||||
+ const char *hyphen_buffered = NULL;
|
|
||||||
+ bool single_hyphen_seen = false;
|
|
||||||
+
|
|
||||||
+ do {
|
|
||||||
+ c = *input;
|
|
||||||
+
|
|
||||||
+ switch (c) {
|
|
||||||
+ case '-':
|
|
||||||
+ if (hyphen_buffered == NULL)
|
|
||||||
+ /* This hyphen may start an escaped hyphen, or it could be the
|
|
||||||
+ * separator in VG-LV.
|
|
||||||
+ */
|
|
||||||
+ hyphen_buffered = input;
|
|
||||||
+ else {
|
|
||||||
+ /* This hyphen completes an escaped hyphen; unescape it. */
|
|
||||||
+ if (mode == M_FILL)
|
|
||||||
+ *output++ = '-';
|
|
||||||
+ hyphen_buffered = NULL;
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case '/':
|
|
||||||
+ /* Slash characters are forbidden in VG-LV anywhere. If there's any,
|
|
||||||
+ * we'll find it in the first (i.e., scanning) phase, before we output
|
|
||||||
+ * anything back to "id".
|
|
||||||
+ */
|
|
||||||
+ assert (mode == M_SCAN);
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ /* Encountered a non-slash, non-hyphen character -- which also may be
|
|
||||||
+ * the terminating NUL.
|
|
||||||
+ */
|
|
||||||
+ if (hyphen_buffered != NULL) {
|
|
||||||
+ /* The non-hyphen character comes after a buffered hyphen, so the
|
|
||||||
+ * buffered hyphen is supposed to be the single hyphen that separates
|
|
||||||
+ * VG from LV in VG-LV. There are three requirements for this
|
|
||||||
+ * separator: (a) it must be unique (we must not have seen another
|
|
||||||
+ * such separator earlier), (b) it must not be at the start of VG-LV
|
|
||||||
+ * (because VG would be empty that way), (c) it must not be at the end
|
|
||||||
+ * of VG-LV (because LV would be empty that way). Should any of these
|
|
||||||
+ * be violated, we'll catch that during the first (i.e., scanning)
|
|
||||||
+ * phase, before modifying "id".
|
|
||||||
+ */
|
|
||||||
+ if (single_hyphen_seen || hyphen_buffered == input_start ||
|
|
||||||
+ c == '\0') {
|
|
||||||
+ assert (mode == M_SCAN);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Translate the separator hyphen to a slash character. */
|
|
||||||
+ if (mode == M_FILL)
|
|
||||||
+ *output++ = '/';
|
|
||||||
+ hyphen_buffered = NULL;
|
|
||||||
+ single_hyphen_seen = true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Output the non-hyphen character (including the terminating NUL)
|
|
||||||
+ * regardless of whether there was a buffered hyphen separator (which,
|
|
||||||
+ * by now, we'll have attempted to translate and flush).
|
|
||||||
+ */
|
|
||||||
+ if (mode == M_FILL)
|
|
||||||
+ *output++ = c;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ++input;
|
|
||||||
+ } while (c != '\0');
|
|
||||||
+
|
|
||||||
+ /* We must have seen the VG-LV separator. If that's not the case, we'll
|
|
||||||
+ * catch it before modifying "id".
|
|
||||||
+ */
|
|
||||||
+ if (!single_hyphen_seen) {
|
|
||||||
+ assert (mode == M_SCAN);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
struct key_store *
|
|
||||||
-key_store_import_key (struct key_store *ks, const struct key_store_key *key)
|
|
||||||
+key_store_import_key (struct key_store *ks, struct key_store_key *key)
|
|
||||||
{
|
|
||||||
struct key_store_key *new_keys;
|
|
||||||
|
|
||||||
@@ -278,6 +377,7 @@ key_store_import_key (struct key_store *ks, const struct key_store_key *key)
|
|
||||||
error (EXIT_FAILURE, errno, "realloc");
|
|
||||||
|
|
||||||
ks->keys = new_keys;
|
|
||||||
+ unescape_device_mapper_lvm (key->id);
|
|
||||||
ks->keys[ks->nr_keys] = *key;
|
|
||||||
++ks->nr_keys;
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
|||||||
From 9ac1ea9d5269c72874ea662cd70803b3781d0876 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Date: Fri, 19 May 2023 17:55:06 +0200
|
|
||||||
Subject: [PATCH] inspector: rename VGs and LVs in LUKS-on-LVM test
|
|
||||||
|
|
||||||
In preparation for a subsequent patch, rename "VG" to "Volume-Group", and
|
|
||||||
"LV<n>" to "Logical-Volume-<n>", in the LUKS-on-LVM virt-inspector test.
|
|
||||||
|
|
||||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2168506
|
|
||||||
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Message-Id: <20230519155507.369494-3-lersek@redhat.com>
|
|
||||||
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
|
|
||||||
(cherry picked from commit 46a381efcf2bf74f1534ecb198f9570ee5baaccd)
|
|
||||||
---
|
|
||||||
inspector/test-virt-inspector-luks-on-lvm.sh | 11 +++----
|
|
||||||
test-data/phony-guests/make-fedora-img.pl | 30 +++++++++++---------
|
|
||||||
2 files changed, 23 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/inspector/test-virt-inspector-luks-on-lvm.sh b/inspector/test-virt-inspector-luks-on-lvm.sh
|
|
||||||
index b9989433d..35454e630 100755
|
|
||||||
--- a/inspector/test-virt-inspector-luks-on-lvm.sh
|
|
||||||
+++ b/inspector/test-virt-inspector-luks-on-lvm.sh
|
|
||||||
@@ -36,14 +36,15 @@ if [ "$(guestfish version | grep minor | awk '{print $2}')" -lt 47 ]; then
|
|
||||||
fi
|
|
||||||
|
|
||||||
f=../test-data/phony-guests/fedora-luks-on-lvm.img
|
|
||||||
-keys=(--key /dev/VG/Root:key:FEDORA-Root
|
|
||||||
- --key /dev/VG/LV1:key:FEDORA-LV1
|
|
||||||
- --key /dev/VG/LV2:key:FEDORA-LV2
|
|
||||||
- --key /dev/VG/LV3:key:FEDORA-LV3)
|
|
||||||
+keys=(--key /dev/Volume-Group/Root:key:FEDORA-Root
|
|
||||||
+ --key /dev/Volume-Group/Logical-Volume-1:key:FEDORA-LV1
|
|
||||||
+ --key /dev/Volume-Group/Logical-Volume-2:key:FEDORA-LV2
|
|
||||||
+ --key /dev/Volume-Group/Logical-Volume-3:key:FEDORA-LV3)
|
|
||||||
|
|
||||||
# Ignore zero-sized file.
|
|
||||||
if [ -s "$f" ]; then
|
|
||||||
- uuid_root=$(guestfish --ro -i -a "$f" "${keys[@]}" luks-uuid /dev/VG/Root)
|
|
||||||
+ uuid_root=$(guestfish --ro -i -a "$f" "${keys[@]}" \
|
|
||||||
+ luks-uuid /dev/Volume-Group/Root)
|
|
||||||
b=$(basename "$f")
|
|
||||||
$VG virt-inspector "${keys[@]}" --format=raw -a "$f" > "actual-$b.xml"
|
|
||||||
# Check the generated output validate the schema.
|
|
||||||
diff --git a/test-data/phony-guests/make-fedora-img.pl b/test-data/phony-guests/make-fedora-img.pl
|
|
||||||
index ffa7e0f10..9721ce4a9 100755
|
|
||||||
--- a/test-data/phony-guests/make-fedora-img.pl
|
|
||||||
+++ b/test-data/phony-guests/make-fedora-img.pl
|
|
||||||
@@ -224,23 +224,27 @@ EOF
|
|
||||||
|
|
||||||
# Create the Volume Group on /dev/sda2.
|
|
||||||
$g->pvcreate ('/dev/sda2');
|
|
||||||
- $g->vgcreate ('VG', ['/dev/sda2']);
|
|
||||||
- $g->lvcreate ('Root', 'VG', 256);
|
|
||||||
- $g->lvcreate ('LV1', 'VG', 32);
|
|
||||||
- $g->lvcreate ('LV2', 'VG', 32);
|
|
||||||
- $g->lvcreate ('LV3', 'VG', 64);
|
|
||||||
+ $g->vgcreate ('Volume-Group', ['/dev/sda2']);
|
|
||||||
+ $g->lvcreate ('Root', 'Volume-Group', 256);
|
|
||||||
+ $g->lvcreate ('Logical-Volume-1', 'Volume-Group', 32);
|
|
||||||
+ $g->lvcreate ('Logical-Volume-2', 'Volume-Group', 32);
|
|
||||||
+ $g->lvcreate ('Logical-Volume-3', 'Volume-Group', 64);
|
|
||||||
|
|
||||||
# Format each Logical Group as a LUKS device, with a different password.
|
|
||||||
- $g->luks_format ('/dev/VG/Root', 'FEDORA-Root', 0);
|
|
||||||
- $g->luks_format ('/dev/VG/LV1', 'FEDORA-LV1', 0);
|
|
||||||
- $g->luks_format ('/dev/VG/LV2', 'FEDORA-LV2', 0);
|
|
||||||
- $g->luks_format ('/dev/VG/LV3', 'FEDORA-LV3', 0);
|
|
||||||
+ $g->luks_format ('/dev/Volume-Group/Root', 'FEDORA-Root', 0);
|
|
||||||
+ $g->luks_format ('/dev/Volume-Group/Logical-Volume-1', 'FEDORA-LV1', 0);
|
|
||||||
+ $g->luks_format ('/dev/Volume-Group/Logical-Volume-2', 'FEDORA-LV2', 0);
|
|
||||||
+ $g->luks_format ('/dev/Volume-Group/Logical-Volume-3', 'FEDORA-LV3', 0);
|
|
||||||
|
|
||||||
# Open the LUKS devices. This creates nodes like /dev/mapper/*-luks.
|
|
||||||
- $g->cryptsetup_open ('/dev/VG/Root', 'FEDORA-Root', 'Root-luks');
|
|
||||||
- $g->cryptsetup_open ('/dev/VG/LV1', 'FEDORA-LV1', 'LV1-luks');
|
|
||||||
- $g->cryptsetup_open ('/dev/VG/LV2', 'FEDORA-LV2', 'LV2-luks');
|
|
||||||
- $g->cryptsetup_open ('/dev/VG/LV3', 'FEDORA-LV3', 'LV3-luks');
|
|
||||||
+ $g->cryptsetup_open ('/dev/Volume-Group/Root',
|
|
||||||
+ 'FEDORA-Root', 'Root-luks');
|
|
||||||
+ $g->cryptsetup_open ('/dev/Volume-Group/Logical-Volume-1',
|
|
||||||
+ 'FEDORA-LV1', 'LV1-luks');
|
|
||||||
+ $g->cryptsetup_open ('/dev/Volume-Group/Logical-Volume-2',
|
|
||||||
+ 'FEDORA-LV2', 'LV2-luks');
|
|
||||||
+ $g->cryptsetup_open ('/dev/Volume-Group/Logical-Volume-3',
|
|
||||||
+ 'FEDORA-LV3', 'LV3-luks');
|
|
||||||
|
|
||||||
# Phony root filesystem.
|
|
||||||
$g->mkfs ('ext2', '/dev/mapper/Root-luks', blocksize => 4096, label => 'ROOT');
|
|
@ -1,48 +0,0 @@
|
|||||||
From d8d1e7213716835f263a4f20d9e6cf8719c210c0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Date: Fri, 19 May 2023 17:55:07 +0200
|
|
||||||
Subject: [PATCH] inspector: test /dev/mapper/VG-LV translation in LUKS-on-LVM
|
|
||||||
test
|
|
||||||
|
|
||||||
In the LUKS-on-LVM virt-inspector test, run virt-inspector one more time,
|
|
||||||
now with such "--key" options that exercise the recent "/dev/mapper/VG-LV"
|
|
||||||
-> "/dev/VG/LV" translation (unescaping) from libguestfs-common. Verify
|
|
||||||
that virt-inspector outputs the same XML as it did when we passed it the
|
|
||||||
"/dev/VG/LV" format "--key" options.
|
|
||||||
|
|
||||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2168506
|
|
||||||
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Message-Id: <20230519155507.369494-4-lersek@redhat.com>
|
|
||||||
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
|
|
||||||
(cherry picked from commit 569bd1dd29da7f3a7b3399ad85340f84d59b3a10)
|
|
||||||
---
|
|
||||||
inspector/test-virt-inspector-luks-on-lvm.sh | 11 +++++++++++
|
|
||||||
1 file changed, 11 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/inspector/test-virt-inspector-luks-on-lvm.sh b/inspector/test-virt-inspector-luks-on-lvm.sh
|
|
||||||
index 35454e630..13b25e338 100755
|
|
||||||
--- a/inspector/test-virt-inspector-luks-on-lvm.sh
|
|
||||||
+++ b/inspector/test-virt-inspector-luks-on-lvm.sh
|
|
||||||
@@ -41,6 +41,11 @@ keys=(--key /dev/Volume-Group/Root:key:FEDORA-Root
|
|
||||||
--key /dev/Volume-Group/Logical-Volume-2:key:FEDORA-LV2
|
|
||||||
--key /dev/Volume-Group/Logical-Volume-3:key:FEDORA-LV3)
|
|
||||||
|
|
||||||
+keys_mapper=(--key /dev/mapper/Volume--Group-Root:key:FEDORA-Root
|
|
||||||
+ --key /dev/mapper/Volume--Group-Logical--Volume--1:key:FEDORA-LV1
|
|
||||||
+ --key /dev/mapper/Volume--Group-Logical--Volume--2:key:FEDORA-LV2
|
|
||||||
+ --key /dev/mapper/Volume--Group-Logical--Volume--3:key:FEDORA-LV3)
|
|
||||||
+
|
|
||||||
# Ignore zero-sized file.
|
|
||||||
if [ -s "$f" ]; then
|
|
||||||
uuid_root=$(guestfish --ro -i -a "$f" "${keys[@]}" \
|
|
||||||
@@ -53,4 +58,10 @@ if [ -s "$f" ]; then
|
|
||||||
# are any differences.
|
|
||||||
sed -e "s/ROOTUUID/$uuid_root/" < "$srcdir/expected-$b.xml" \
|
|
||||||
| diff -u - "actual-$b.xml"
|
|
||||||
+
|
|
||||||
+ # Re-run virt-inspector with keys using the /dev/mapper/VG-LV format; verify
|
|
||||||
+ # only that the XML output matches the output from the previous
|
|
||||||
+ # virt-inspector invocation (which used the /dev/VG/LV format).
|
|
||||||
+ $VG virt-inspector "${keys_mapper[@]}" --format=raw -a "$f" \
|
|
||||||
+ | diff -u "actual-$b.xml" -
|
|
||||||
fi
|
|
@ -7,7 +7,7 @@ set -e
|
|||||||
# ./copy-patches.sh
|
# ./copy-patches.sh
|
||||||
|
|
||||||
project=guestfs-tools
|
project=guestfs-tools
|
||||||
rhel_version=9.3
|
rhel_version=9.4
|
||||||
|
|
||||||
# Check we're in the right directory.
|
# Check we're in the right directory.
|
||||||
if [ ! -f $project.spec ]; then
|
if [ ! -f $project.spec ]; then
|
||||||
|
@ -11,16 +11,16 @@
|
|||||||
%global patches_touch_autotools 1
|
%global patches_touch_autotools 1
|
||||||
|
|
||||||
# The source directory.
|
# The source directory.
|
||||||
%global source_directory 1.50-stable
|
%global source_directory 1.51-development
|
||||||
|
|
||||||
# Filter perl provides.
|
# Filter perl provides.
|
||||||
%{?perl_default_filter}
|
%{?perl_default_filter}
|
||||||
|
|
||||||
Summary: Tools to access and modify virtual machine disk images
|
Summary: Tools to access and modify virtual machine disk images
|
||||||
Name: guestfs-tools
|
Name: guestfs-tools
|
||||||
Version: 1.50.1
|
Version: 1.51.6
|
||||||
Release: 3%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2+
|
License: GPL-2.0-or-later AND LGPL-2.0-or-later
|
||||||
|
|
||||||
# Build only for architectures that have a kernel
|
# Build only for architectures that have a kernel
|
||||||
ExclusiveArch: %{kernel_arches}
|
ExclusiveArch: %{kernel_arches}
|
||||||
@ -45,16 +45,12 @@ Source2: libguestfs.keyring
|
|||||||
Source3: copy-patches.sh
|
Source3: copy-patches.sh
|
||||||
|
|
||||||
# Patches are maintained in the following repository:
|
# Patches are maintained in the following repository:
|
||||||
# https://github.com/rwmjones/guestfs-tools/commits/rhel-9.3
|
# https://github.com/rwmjones/guestfs-tools/commits/rhel-9.4
|
||||||
|
|
||||||
# Patches.
|
# Patches.
|
||||||
Patch0001: 0001-RHEL-Reject-use-of-libguestfs-winsupport-features-ex.patch
|
Patch0001: 0001-Update-common-submodule.patch
|
||||||
Patch0002: 0002-RHEL-builder-Disable-opensuse-repository.patch
|
Patch0002: 0002-RHEL-Reject-use-of-libguestfs-winsupport-features-ex.patch
|
||||||
Patch0003: 0003-Remove-virt-dib.patch
|
Patch0003: 0003-RHEL-builder-Disable-opensuse-repository.patch
|
||||||
Patch0004: 0004-drivers-Look-up-vendor-and-device-names-in-PCI-and-U.patch
|
|
||||||
Patch0005: 0005-update-common-submodule.patch
|
|
||||||
Patch0006: 0006-inspector-rename-VGs-and-LVs-in-LUKS-on-LVM-test.patch
|
|
||||||
Patch0007: 0007-inspector-test-dev-mapper-VG-LV-translation-in-LUKS-.patch
|
|
||||||
|
|
||||||
%if 0%{patches_touch_autotools}
|
%if 0%{patches_touch_autotools}
|
||||||
BuildRequires: autoconf, automake, libtool, gettext-devel
|
BuildRequires: autoconf, automake, libtool, gettext-devel
|
||||||
@ -207,7 +203,7 @@ Virt-tail follows (tails) a log file within a guest, like 'tail -f'.
|
|||||||
|
|
||||||
%package -n virt-win-reg
|
%package -n virt-win-reg
|
||||||
Summary: Access and modify the Windows Registry of a Windows VM
|
Summary: Access and modify the Windows Registry of a Windows VM
|
||||||
License: GPLv2+
|
License: GPL-2.0-or-later
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
# This replaces the libguestfs-tools package.
|
# This replaces the libguestfs-tools package.
|
||||||
@ -413,6 +409,13 @@ end
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Dec 11 2023 Richard W.M. Jones <rjones@redhat.com> - 1.51.6-1
|
||||||
|
- Rebase to guestfs-tools 1.51.6
|
||||||
|
- Implement --key all:...
|
||||||
|
resolves: RHEL-19030
|
||||||
|
- Fix crash because of off-by-one error
|
||||||
|
resolves: RHEL-19062
|
||||||
|
|
||||||
* Thu Jun 08 2023 Laszlo Ersek <lersek@redhat.com> - 1.50.1-3
|
* Thu Jun 08 2023 Laszlo Ersek <lersek@redhat.com> - 1.50.1-3
|
||||||
- let virt-inspector recognize "--key /dev/mapper/VG-LV:key:password"
|
- let virt-inspector recognize "--key /dev/mapper/VG-LV:key:password"
|
||||||
- reenable "make check"; we now use "-cpu max" (libguestfs 30f74f38bd6e)
|
- reenable "make check"; we now use "-cpu max" (libguestfs 30f74f38bd6e)
|
||||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (guestfs-tools-1.50.1.tar.gz) = d4544dfbfbf4764f7d166fb6a97c2c3204e62aa96652020b63dd9a11233f314e811fad4a1a9dc053237b31140eaa6d30da8385c6bce4231ccc653f63afae4b89
|
SHA512 (guestfs-tools-1.51.6.tar.gz) = 48e6d5bb7c8b1e6b7b9b7e59b3122b287d321d3e8e435fa65f84aab594d8cf91b0d6d50a4dde7f9265ccabc73bb3b67a8593bfd86a4fbf6b17323fe8496fc8c5
|
||||||
SHA512 (guestfs-tools-1.50.1.tar.gz.sig) = c4b987e039e69f5e0aa9322d70f47fc8cb6bf36ecfcd2a5936cc66bd1fef20e50a7354423ea832b51011b0443506080d783172351ee637cc7f247125d32e3989
|
SHA512 (guestfs-tools-1.51.6.tar.gz.sig) = 341e5220a3251e019dbca20997d478f2ea49008e488f9cfa309a636502902eb3e84dbcadea5f9993e19b1066766a6e1afd1aaf2b22e74212699da66c0a9266ab
|
||||||
|
Loading…
Reference in New Issue
Block a user