parent
bdbd4e7363
commit
bbbc6d1c14
26
0003-lvmdbus-preserve-PATH-envvar.patch
Normal file
26
0003-lvmdbus-preserve-PATH-envvar.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 1835574e39e9417b3800469fe80ce47d2210b9a7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Zdenek Kabelac <zkabelac@redhat.com>
|
||||||
|
Date: Sun, 23 Apr 2023 12:49:37 +0200
|
||||||
|
Subject: [PATCH 3/8] lvmdbus: preserve PATH envvar
|
||||||
|
|
||||||
|
(cherry picked from commit afc02ae6e7234e1190cedf5c74ca3d6367efd7d1)
|
||||||
|
---
|
||||||
|
daemons/lvmdbusd/lvm_shell_proxy.py.in | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/daemons/lvmdbusd/lvm_shell_proxy.py.in b/daemons/lvmdbusd/lvm_shell_proxy.py.in
|
||||||
|
index b8c8fa565..02a776e1d 100755
|
||||||
|
--- a/daemons/lvmdbusd/lvm_shell_proxy.py.in
|
||||||
|
+++ b/daemons/lvmdbusd/lvm_shell_proxy.py.in
|
||||||
|
@@ -154,6 +154,8 @@ class LVMShellProxy(object):
|
||||||
|
|
||||||
|
# If any env variables contain LVM we will propagate them too
|
||||||
|
for k, v in os.environ.items():
|
||||||
|
+ if "PATH" in k:
|
||||||
|
+ local_env[k] = v
|
||||||
|
if "LVM" in k:
|
||||||
|
local_env[k] = v
|
||||||
|
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 80b73e2901d470fd3d1f45664626980167091f02 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Teigland <teigland@redhat.com>
|
||||||
|
Date: Tue, 25 Apr 2023 14:46:36 -0500
|
||||||
|
Subject: [PATCH 4/8] lvmcache: fix valgrind error when dropping md duplicate
|
||||||
|
|
||||||
|
When lvmcache info is dropped because it's an md component,
|
||||||
|
then the lvmcache vginfo can also be dropped, but the list
|
||||||
|
iterator was still using the list head in vginfo, so break
|
||||||
|
from the loop earlier to avoid it.
|
||||||
|
|
||||||
|
(cherry picked from commit 6d262eaf640dead7861c1a7716e216b9bcea75e5)
|
||||||
|
---
|
||||||
|
lib/cache/lvmcache.c | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
|
||||||
|
index b8a9eac25..127d29229 100644
|
||||||
|
--- a/lib/cache/lvmcache.c
|
||||||
|
+++ b/lib/cache/lvmcache.c
|
||||||
|
@@ -1503,6 +1503,9 @@ void lvmcache_extra_md_component_checks(struct cmd_context *cmd)
|
||||||
|
*/
|
||||||
|
|
||||||
|
dm_list_iterate_items_safe(vginfo, vginfo2, &_vginfos) {
|
||||||
|
+ char vgid[ID_LEN + 1] __attribute__((aligned(8))) = { 0 };
|
||||||
|
+ memcpy(vgid, vginfo->vgid, ID_LEN);
|
||||||
|
+
|
||||||
|
dm_list_iterate_items_safe(info, info2, &vginfo->infos) {
|
||||||
|
dev = info->dev;
|
||||||
|
device_hint = _get_pvsummary_device_hint(dev->pvid);
|
||||||
|
@@ -1557,6 +1560,10 @@ void lvmcache_extra_md_component_checks(struct cmd_context *cmd)
|
||||||
|
/* lvmcache_del will also delete vginfo if info was last one */
|
||||||
|
lvmcache_del(info);
|
||||||
|
cmd->filter->wipe(cmd, cmd->filter, dev, NULL);
|
||||||
|
+
|
||||||
|
+ /* If vginfo was deleted don't continue using vginfo->infos */
|
||||||
|
+ if (!_search_vginfos_list(NULL, vgid))
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
31
0005-pvck-improve-error-for-write-to-existing-file.patch
Normal file
31
0005-pvck-improve-error-for-write-to-existing-file.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From 0a9228807d0b3901be4ccf29311a955efba4877e Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Teigland <teigland@redhat.com>
|
||||||
|
Date: Fri, 28 Apr 2023 13:31:39 -0500
|
||||||
|
Subject: [PATCH 5/8] pvck: improve error for write to existing file
|
||||||
|
|
||||||
|
(cherry picked from commit c4440b5b495a2d11ff541dd7e7791e2a83c83609)
|
||||||
|
---
|
||||||
|
tools/pvck.c | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tools/pvck.c b/tools/pvck.c
|
||||||
|
index 879810b76..0998caaf5 100644
|
||||||
|
--- a/tools/pvck.c
|
||||||
|
+++ b/tools/pvck.c
|
||||||
|
@@ -1444,8 +1444,13 @@ static int _dump_metadata(struct cmd_context *cmd, const char *dump, struct sett
|
||||||
|
int bad = 0;
|
||||||
|
|
||||||
|
if (arg_is_set(cmd, file_ARG)) {
|
||||||
|
+ struct stat sb;
|
||||||
|
if (!(tofile = arg_str_value(cmd, file_ARG, NULL)))
|
||||||
|
return 0;
|
||||||
|
+ if (!stat(tofile, &sb)) {
|
||||||
|
+ log_error("File already exists.");
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (set->mda_num)
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,87 @@
|
|||||||
|
From 7702262444a5af924d0fc94ff956663aab3505df Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Teigland <teigland@redhat.com>
|
||||||
|
Date: Tue, 2 May 2023 16:12:23 -0500
|
||||||
|
Subject: [PATCH 6/8] lvreduce: make _lvseg_get_stripes handle integrity layer
|
||||||
|
|
||||||
|
lvreduce uses _lvseg_get_stripes() which was unable to get raid stripe
|
||||||
|
info with an integrity layer present. This caused lvreduce on a
|
||||||
|
raid+integrity LV to fail prematurely when checking stripe parameters.
|
||||||
|
An unhelpful error message about stripe size would be printed.
|
||||||
|
|
||||||
|
(cherry picked from commit 368381fd4022dc99ffe551b30ed75c3ddbc5c5c8)
|
||||||
|
---
|
||||||
|
lib/metadata/lv_manip.c | 35 ++++++++++++++++++++++++++---------
|
||||||
|
1 file changed, 26 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
|
||||||
|
index 2a4e0e88a..add9512ff 100644
|
||||||
|
--- a/lib/metadata/lv_manip.c
|
||||||
|
+++ b/lib/metadata/lv_manip.c
|
||||||
|
@@ -5144,22 +5144,39 @@ int lv_extend_policy_calculate_percent(struct logical_volume *lv,
|
||||||
|
|
||||||
|
static uint32_t _lvseg_get_stripes(struct lv_segment *seg, uint32_t *stripesize)
|
||||||
|
{
|
||||||
|
- uint32_t s;
|
||||||
|
- struct lv_segment *seg_mirr;
|
||||||
|
+ uint32_t s, a;
|
||||||
|
+ struct lv_segment *seg_get, *seg_image, *seg_iorig;
|
||||||
|
+ struct logical_volume *lv_image, *lv_iorig;
|
||||||
|
|
||||||
|
/* If segment mirrored, check if images are striped */
|
||||||
|
- if (seg_is_mirrored(seg))
|
||||||
|
+ if (seg_is_mirrored(seg)) {
|
||||||
|
for (s = 0; s < seg->area_count; s++) {
|
||||||
|
if (seg_type(seg, s) != AREA_LV)
|
||||||
|
continue;
|
||||||
|
- seg_mirr = first_seg(seg_lv(seg, s));
|
||||||
|
|
||||||
|
- if (seg_is_striped(seg_mirr)) {
|
||||||
|
- seg = seg_mirr;
|
||||||
|
+ lv_image = seg_lv(seg, s);
|
||||||
|
+ seg_image = first_seg(lv_image);
|
||||||
|
+ seg_get = NULL;
|
||||||
|
+
|
||||||
|
+ if (seg_is_integrity(seg_image)) {
|
||||||
|
+ /* Get stripe values from the iorig layer. */
|
||||||
|
+ for (a = 0; a < seg_image->area_count; a++) {
|
||||||
|
+ lv_iorig = seg_lv(seg_image, a);
|
||||||
|
+ seg_iorig = first_seg(lv_iorig);
|
||||||
|
+ seg_get = seg_iorig;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ /* Get stripe values from the image layer. */
|
||||||
|
+ seg_get = seg_image;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (seg_get && seg_is_striped(seg_get)) {
|
||||||
|
+ seg = seg_get;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (seg_is_striped(seg)) {
|
||||||
|
*stripesize = seg->stripe_size;
|
||||||
|
@@ -5168,7 +5185,7 @@ static uint32_t _lvseg_get_stripes(struct lv_segment *seg, uint32_t *stripesize)
|
||||||
|
|
||||||
|
if (seg_is_raid(seg)) {
|
||||||
|
*stripesize = seg->stripe_size;
|
||||||
|
- return _raid_stripes_count(seg);
|
||||||
|
+ return _raid_stripes_count(seg);
|
||||||
|
}
|
||||||
|
|
||||||
|
*stripesize = 0;
|
||||||
|
@@ -5593,7 +5610,7 @@ static int _lvresize_adjust_extents(struct logical_volume *lv,
|
||||||
|
seg_size /= seg_mirrors;
|
||||||
|
lp->extents = logical_extents_used + seg_size;
|
||||||
|
break;
|
||||||
|
- }
|
||||||
|
+ }
|
||||||
|
} else if (new_extents <= logical_extents_used + seg_logical_extents) {
|
||||||
|
seg_size = new_extents - logical_extents_used;
|
||||||
|
lp->extents = new_extents;
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,96 @@
|
|||||||
|
From 50bd94ca38177c18e6d761d012c56227591df68c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Rajnoha <prajnoha@redhat.com>
|
||||||
|
Date: Tue, 16 May 2023 17:17:55 +0200
|
||||||
|
Subject: [PATCH 7/8] toollib: provide proper hint for referencing VG uuid in
|
||||||
|
case of duplicate VG names
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
vgrename does not support -S|--select, so do not provide a hint about
|
||||||
|
using it. Instead, provide a hint about using VG uuid directly.
|
||||||
|
|
||||||
|
❯ vgs
|
||||||
|
WARNING: VG name vg1 is used by VGs DXjcSK-gWfu-5gLh-9Kbg-sG49-dtRr-GqXzGL and MVMfyM-sjOa-M2xV-AT4Y-JddR-h4SP-UO5Ttk.
|
||||||
|
Fix duplicate VG names with vgrename uuid, a device filter, or system IDs.
|
||||||
|
VG #PV #LV #SN Attr VSize VFree
|
||||||
|
vg1 1 0 0 wz--n- 124.00m 124.00m
|
||||||
|
vg1 1 0 0 wz--n- 124.00m 124.00m
|
||||||
|
|
||||||
|
(vgrename does not support -S|--select)
|
||||||
|
❯ vgrename vg1 vg2
|
||||||
|
WARNING: VG name vg1 is used by VGs DXjcSK-gWfu-5gLh-9Kbg-sG49-dtRr-GqXzGL and MVMfyM-sjOa-M2xV-AT4Y-JddR-h4SP-UO5Ttk.
|
||||||
|
Fix duplicate VG names with vgrename uuid, a device filter, or system IDs.
|
||||||
|
Multiple VGs found with the same name: skipping vg1
|
||||||
|
Use VG uuid in place of the VG name.
|
||||||
|
|
||||||
|
(vgchange does support -S|--select)
|
||||||
|
❯ vgchange --addtag a vg1
|
||||||
|
WARNING: VG name vg1 is used by VGs DXjcSK-gWfu-5gLh-9Kbg-sG49-dtRr-GqXzGL and MVMfyM-sjOa-M2xV-AT4Y-JddR-h4SP-UO5Ttk.
|
||||||
|
Fix duplicate VG names with vgrename uuid, a device filter, or system IDs.
|
||||||
|
Multiple VGs found with the same name: skipping vg1
|
||||||
|
Use --select vg_uuid=<uuid> in place of the VG name.
|
||||||
|
|
||||||
|
(cherry picked from commit 3b4e7d1625ddc48dd9393f03a59cc6b74113275a)
|
||||||
|
---
|
||||||
|
tools/lvmcmdline.c | 12 ++++++++++++
|
||||||
|
tools/toollib.c | 7 ++++++-
|
||||||
|
tools/tools.h | 1 +
|
||||||
|
3 files changed, 19 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
|
||||||
|
index a5bb6a5c5..6bbf1af26 100644
|
||||||
|
--- a/tools/lvmcmdline.c
|
||||||
|
+++ b/tools/lvmcmdline.c
|
||||||
|
@@ -179,6 +179,18 @@ static const struct command_function _command_functions[CMD_COUNT] = {
|
||||||
|
|
||||||
|
|
||||||
|
/* Command line args */
|
||||||
|
+int arg_is_valid_for_command(const struct cmd_context *cmd, int a)
|
||||||
|
+{
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < cmd->cname->num_args; i++) {
|
||||||
|
+ if (cmd->cname->valid_args[i] == a)
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
unsigned arg_count(const struct cmd_context *cmd, int a)
|
||||||
|
{
|
||||||
|
return cmd->opt_arg_values ? cmd->opt_arg_values[a].count : 0;
|
||||||
|
diff --git a/tools/toollib.c b/tools/toollib.c
|
||||||
|
index 43e628abf..e5ed8a857 100644
|
||||||
|
--- a/tools/toollib.c
|
||||||
|
+++ b/tools/toollib.c
|
||||||
|
@@ -2313,7 +2313,12 @@ static int _resolve_duplicate_vgnames(struct cmd_context *cmd,
|
||||||
|
* is unknown.
|
||||||
|
*/
|
||||||
|
log_error("Multiple VGs found with the same name: skipping %s", sl->str);
|
||||||
|
- log_error("Use --select vg_uuid=<uuid> in place of the VG name.");
|
||||||
|
+
|
||||||
|
+ if (arg_is_valid_for_command(cmd, select_ARG))
|
||||||
|
+ log_error("Use --select vg_uuid=<uuid> in place of the VG name.");
|
||||||
|
+ else
|
||||||
|
+ log_error("Use VG uuid in place of the VG name.");
|
||||||
|
+
|
||||||
|
dm_list_del(&sl->list);
|
||||||
|
ret = ECMD_FAILED;
|
||||||
|
}
|
||||||
|
diff --git a/tools/tools.h b/tools/tools.h
|
||||||
|
index 36da3bc7e..60952a2aa 100644
|
||||||
|
--- a/tools/tools.h
|
||||||
|
+++ b/tools/tools.h
|
||||||
|
@@ -193,6 +193,7 @@ int repairtype_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_v
|
||||||
|
int dumptype_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_values *av);
|
||||||
|
|
||||||
|
/* we use the enums to access the switches */
|
||||||
|
+int arg_is_valid_for_command(const struct cmd_context *cmd, int a);
|
||||||
|
unsigned arg_count(const struct cmd_context *cmd, int a);
|
||||||
|
unsigned arg_is_set(const struct cmd_context *cmd, int a);
|
||||||
|
int arg_from_list_is_set(const struct cmd_context *cmd, const char *err_found, ...);
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,37 @@
|
|||||||
|
From 41d16e42f88997fda991f86d598bffc19fcd937f Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Teigland <teigland@redhat.com>
|
||||||
|
Date: Wed, 17 May 2023 11:10:45 -0500
|
||||||
|
Subject: [PATCH 8/8] tests: integrity: snapshots now work on raid+integrity
|
||||||
|
|
||||||
|
(cherry picked from commit 3a757047560d75a28d7e4c7d9a5253a72d786544)
|
||||||
|
---
|
||||||
|
test/shell/integrity.sh | 8 --------
|
||||||
|
1 file changed, 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/test/shell/integrity.sh b/test/shell/integrity.sh
|
||||||
|
index a7dd5b565..d1683a08e 100644
|
||||||
|
--- a/test/shell/integrity.sh
|
||||||
|
+++ b/test/shell/integrity.sh
|
||||||
|
@@ -626,7 +626,6 @@ not lvconvert --splitmirrors 1 -n tmp -y $vg/$lv1
|
||||||
|
not lvconvert --splitmirrors 1 --trackchanges -y $vg/$lv1
|
||||||
|
not lvchange --syncaction repair $vg/$lv1
|
||||||
|
not lvreduce -L4M $vg/$lv1
|
||||||
|
-not lvcreate -s -n snap -L4M $vg/$lv1
|
||||||
|
not pvmove -n $vg/$lv1 "$dev1"
|
||||||
|
not pvmove "$dev1"
|
||||||
|
_verify_data_on_mnt
|
||||||
|
@@ -810,11 +809,4 @@ not lvconvert --raidintegrity y $vg/${lv2}_cpool_cdata
|
||||||
|
not lvconvert --raidintegrity y $vg/${lv2}_cpool_cmeta
|
||||||
|
lvremove -y $vg/$lv1
|
||||||
|
|
||||||
|
-# cannot add integrity to raid that has a snapshot
|
||||||
|
-
|
||||||
|
-lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
|
||||||
|
-lvcreate -s -n $lv2 -l 8 $vg/$lv1
|
||||||
|
-not lvconvert --raidintegrity y $vg/$lv1
|
||||||
|
-lvremove -y $vg/$lv1
|
||||||
|
-
|
||||||
|
vgremove -ff $vg
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
12
lvm2.spec
12
lvm2.spec
@ -66,6 +66,16 @@ Source0: ftp://sourceware.org/pub/lvm2/releases/LVM2.%{version}.tgz
|
|||||||
# BZ 2179430:
|
# BZ 2179430:
|
||||||
Patch1: 0001-fix-dev_name-use-in-add_areas_line.patch
|
Patch1: 0001-fix-dev_name-use-in-add_areas_line.patch
|
||||||
Patch2: 0002-raidintegrity-allow-snapshots.patch
|
Patch2: 0002-raidintegrity-allow-snapshots.patch
|
||||||
|
Patch3: 0003-lvmdbus-preserve-PATH-envvar.patch
|
||||||
|
Patch4: 0004-lvmcache-fix-valgrind-error-when-dropping-md-duplica.patch
|
||||||
|
# BZ 2188718
|
||||||
|
Patch5: 0005-pvck-improve-error-for-write-to-existing-file.patch
|
||||||
|
# BZ 2191683:
|
||||||
|
Patch6: 0006-lvreduce-make-_lvseg_get_stripes-handle-integrity-la.patch
|
||||||
|
# BZ 2188480:
|
||||||
|
#Patch7: 0007-toollib-provide-proper-hint-for-referencing-VG-uuid-.patch
|
||||||
|
# BZ 2179430:
|
||||||
|
Patch8: 0008-tests-integrity-snapshots-now-work-on-raid-integrity.patch
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
@ -693,7 +703,7 @@ An extensive functional testsuite for LVM2.
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Wed May 17 2023 Marian Csontos <mcsontos@redhat.com> - 2.03.21-2
|
* Wed May 24 2023 Marian Csontos <mcsontos@redhat.com> - 2.03.21-2
|
||||||
- Allow snapshots over raid+integrity LV.
|
- Allow snapshots over raid+integrity LV.
|
||||||
|
|
||||||
* Fri Apr 21 2023 Marian Csontos <mcsontos@redhat.com> - 2.03.21-1
|
* Fri Apr 21 2023 Marian Csontos <mcsontos@redhat.com> - 2.03.21-1
|
||||||
|
Loading…
Reference in New Issue
Block a user