import lvm2-2.03.12-3.el8
This commit is contained in:
parent
4e7c260570
commit
a9924dde62
@ -0,0 +1,25 @@
|
||||
tools/command-lines.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/tools/command-lines.in b/tools/command-lines.in
|
||||
index 1107c1e..67c37ff 100644
|
||||
--- a/tools/command-lines.in
|
||||
+++ b/tools/command-lines.in
|
||||
@@ -534,7 +534,7 @@ RULE: all and lv_is_visible
|
||||
|
||||
---
|
||||
|
||||
-lvconvert --type thin-pool LV_linear_striped_raid_cache_error_zero
|
||||
+lvconvert --type thin-pool LV_linear_striped_raid_cache_writecache_error_zero
|
||||
OO: --stripes_long Number, --stripesize SizeKB,
|
||||
OO_LVCONVERT_THINPOOL, OO_LVCONVERT_POOL, OO_LVCONVERT
|
||||
OP: PV ...
|
||||
@@ -566,7 +566,7 @@ RULE: --poolmetadata not --readahead --stripesize --stripes_long
|
||||
# This command syntax is deprecated, and the primary forms
|
||||
# of creating a pool or swapping metadata should be used.
|
||||
|
||||
-lvconvert --thinpool LV_linear_striped_raid_cache_thinpool
|
||||
+lvconvert --thinpool LV_linear_striped_raid_cache_writecache_thinpool
|
||||
OO: --stripes_long Number, --stripesize SizeKB,
|
||||
OO_LVCONVERT_THINPOOL, OO_LVCONVERT_POOL, OO_LVCONVERT
|
||||
OP: PV ...
|
@ -0,0 +1,150 @@
|
||||
lib/metadata/lv_manip.c | 19 +++++++++
|
||||
lib/metadata/metadata-exported.h | 2 +
|
||||
lib/metadata/thin_manip.c | 12 ++++++
|
||||
test/shell/lvremove-thindata-caches.sh | 71 ++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 104 insertions(+)
|
||||
create mode 100644 test/shell/lvremove-thindata-caches.sh
|
||||
|
||||
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
|
||||
index 508f78c..37dd361 100644
|
||||
--- a/lib/metadata/lv_manip.c
|
||||
+++ b/lib/metadata/lv_manip.c
|
||||
@@ -6692,6 +6692,25 @@ int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||
return_0;
|
||||
}
|
||||
|
||||
+ /* if thin pool data lv is writecache, then detach and remove the writecache */
|
||||
+ if (lv_is_thin_pool(lv)) {
|
||||
+ struct logical_volume *data_lv = data_lv_from_thin_pool(lv);
|
||||
+
|
||||
+ if (data_lv && lv_is_writecache(data_lv)) {
|
||||
+ struct logical_volume *cachevol_lv = first_seg(data_lv)->writecache;
|
||||
+
|
||||
+ if (!lv_detach_writecache_cachevol(data_lv, 1)) {
|
||||
+ log_error("Failed to detach writecache from %s", display_lvname(data_lv));
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ if (!lv_remove_single(cmd, cachevol_lv, force, 1)) {
|
||||
+ log_error("Failed to remove cachevol %s.", display_lvname(cachevol_lv));
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (lv_is_writecache(lv)) {
|
||||
struct logical_volume *cachevol_lv = first_seg(lv)->writecache;
|
||||
|
||||
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
|
||||
index c611635..54bc0d0 100644
|
||||
--- a/lib/metadata/metadata-exported.h
|
||||
+++ b/lib/metadata/metadata-exported.h
|
||||
@@ -927,6 +927,8 @@ int handle_pool_metadata_spare(struct volume_group *vg, uint32_t extents,
|
||||
int vg_set_pool_metadata_spare(struct logical_volume *lv);
|
||||
int vg_remove_pool_metadata_spare(struct volume_group *vg);
|
||||
|
||||
+struct logical_volume *data_lv_from_thin_pool(struct logical_volume *pool_lv);
|
||||
+
|
||||
int attach_thin_external_origin(struct lv_segment *seg,
|
||||
struct logical_volume *external_lv);
|
||||
int detach_thin_external_origin(struct lv_segment *seg);
|
||||
diff --git a/lib/metadata/thin_manip.c b/lib/metadata/thin_manip.c
|
||||
index 451c382..6ce88bd 100644
|
||||
--- a/lib/metadata/thin_manip.c
|
||||
+++ b/lib/metadata/thin_manip.c
|
||||
@@ -21,6 +21,18 @@
|
||||
#include "lib/config/defaults.h"
|
||||
#include "lib/display/display.h"
|
||||
|
||||
+struct logical_volume *data_lv_from_thin_pool(struct logical_volume *pool_lv)
|
||||
+{
|
||||
+ struct lv_segment *seg_thinpool = first_seg(pool_lv);
|
||||
+
|
||||
+ if (!seg_thinpool || !seg_is_thin_pool(seg_thinpool)) {
|
||||
+ log_error(INTERNAL_ERROR "data_lv_from_thin_pool arg not thin pool %s", pool_lv->name);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ return seg_thinpool->areas[0].u.lv.lv;
|
||||
+}
|
||||
+
|
||||
/* TODO: drop unused no_update */
|
||||
int attach_pool_message(struct lv_segment *pool_seg, dm_thin_message_t type,
|
||||
struct logical_volume *lv, uint32_t delete_id,
|
||||
diff --git a/test/shell/lvremove-thindata-caches.sh b/test/shell/lvremove-thindata-caches.sh
|
||||
new file mode 100644
|
||||
index 0000000..ba099c3
|
||||
--- /dev/null
|
||||
+++ b/test/shell/lvremove-thindata-caches.sh
|
||||
@@ -0,0 +1,71 @@
|
||||
+#!/usr/bin/env bash
|
||||
+
|
||||
+# Copyright (C) 2017-2020 Red Hat, Inc. All rights reserved.
|
||||
+#
|
||||
+# This copyrighted material is made available to anyone wishing to use,
|
||||
+# modify, copy, or redistribute it subject to the terms and conditions
|
||||
+# of the GNU General Public License v.2.
|
||||
+#
|
||||
+# 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
|
||||
+
|
||||
+SKIP_WITH_LVMPOLLD=1
|
||||
+
|
||||
+. lib/inittest
|
||||
+
|
||||
+aux have_cache 1 10 0 || skip
|
||||
+aux have_writecache 1 0 0 || skip
|
||||
+which mkfs.xfs || skip
|
||||
+
|
||||
+aux prepare_devs 6 70 # want 64M of usable space from each dev
|
||||
+
|
||||
+vgcreate $SHARED $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6"
|
||||
+
|
||||
+# lv1 is thinpool LV: 128M
|
||||
+# lv2 is fast LV: 64M
|
||||
+# lv3 is thin LV: 1G
|
||||
+
|
||||
+#
|
||||
+# Test lvremove of a thinpool that uses cache|writecache on data
|
||||
+#
|
||||
+
|
||||
+# attach writecache to thinpool data
|
||||
+lvcreate --type thin-pool -n $lv1 -L128M --poolmetadataspare n $vg "$dev1" "$dev2"
|
||||
+lvcreate --type thin -n $lv3 -V1G --thinpool $lv1 $vg
|
||||
+lvcreate -n $lv2 -L64M -an $vg "$dev3"
|
||||
+lvconvert -y --type writecache --cachevol $lv2 $vg/$lv1
|
||||
+lvchange -ay $vg/$lv1
|
||||
+lvs -a $vg
|
||||
+mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv3"
|
||||
+lvremove -y $vg/$lv1
|
||||
+
|
||||
+# attach cache/writeback (cachevol) to thinpool data
|
||||
+lvcreate --type thin-pool -n $lv1 -L128M --poolmetadataspare n $vg "$dev1" "$dev2"
|
||||
+lvcreate --type thin -n $lv3 -V1G --thinpool $lv1 $vg
|
||||
+lvcreate -n $lv2 -L64M -an $vg "$dev3"
|
||||
+lvconvert -y --type cache --cachevol $lv2 --cachemode writeback $vg/$lv1
|
||||
+lvchange -ay $vg/$lv1
|
||||
+mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv3"
|
||||
+lvremove -y $vg/$lv1
|
||||
+
|
||||
+# attach cache/writethrough (cachevol) to thinpool data
|
||||
+lvcreate --type thin-pool -n $lv1 -L128M --poolmetadataspare n $vg "$dev1" "$dev2"
|
||||
+lvcreate --type thin -n $lv3 -V1G --thinpool $lv1 $vg
|
||||
+lvcreate -n $lv2 -L64M -an $vg "$dev3"
|
||||
+lvconvert -y --type cache --cachevol $lv2 --cachemode writethrough $vg/$lv1
|
||||
+lvchange -ay $vg/$lv1
|
||||
+mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv3"
|
||||
+lvremove -y $vg/$lv1
|
||||
+
|
||||
+# attach cache (cachepool) to thinpool data
|
||||
+lvcreate --type thin-pool -n $lv1 -L128M --poolmetadataspare n $vg "$dev1" "$dev2"
|
||||
+lvcreate --type thin -n $lv3 -V1G --thinpool $lv1 $vg
|
||||
+lvcreate -y --type cache-pool -n $lv2 -L64M --poolmetadataspare n $vg "$dev3" "$dev6"
|
||||
+lvconvert -y --type cache --cachepool $lv2 --poolmetadataspare n $vg/$lv1
|
||||
+lvchange -ay $vg/$lv1
|
||||
+mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv3"
|
||||
+lvremove -y $vg/$lv1
|
||||
+
|
||||
+vgremove -f $vg
|
||||
+
|
@ -0,0 +1,23 @@
|
||||
tools/pvmove.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/tools/pvmove.c b/tools/pvmove.c
|
||||
index da635a6..bb372f7 100644
|
||||
--- a/tools/pvmove.c
|
||||
+++ b/tools/pvmove.c
|
||||
@@ -387,6 +387,15 @@ static struct logical_volume *_set_up_pvmove_lv(struct cmd_context *cmd,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ if (lv_is_writecache(lv)) {
|
||||
+ struct logical_volume *lv_cachevol = first_seg(lv)->writecache;
|
||||
+ if (lv_is_on_pvs(lv_cachevol, source_pvl)) {
|
||||
+ log_error("Unable to move device used for writecache cachevol %s.", display_lvname(lv_cachevol));
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+
|
||||
if (lv_is_raid(lv) && lv_raid_has_integrity(lv)) {
|
||||
log_error("Unable to pvmove device used for raid with integrity.");
|
||||
return NULL;
|
17
SOURCES/lvm2-2_03_13-writecache-fix-lv_on_pmem.patch
Normal file
17
SOURCES/lvm2-2_03_13-writecache-fix-lv_on_pmem.patch
Normal file
@ -0,0 +1,17 @@
|
||||
lib/metadata/metadata.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
|
||||
index 002d80c..1f65045 100644
|
||||
--- a/lib/metadata/metadata.c
|
||||
+++ b/lib/metadata/metadata.c
|
||||
@@ -4402,6 +4402,9 @@ int lv_on_pmem(struct logical_volume *lv)
|
||||
|
||||
dm_list_iterate_items(seg, &lv->segments) {
|
||||
for (s = 0; s < seg->area_count; s++) {
|
||||
+ if (seg_type(seg, s) != AREA_PV)
|
||||
+ continue;
|
||||
+
|
||||
pv = seg_pv(seg, s);
|
||||
|
||||
if (dev_is_pmem(lv->vg->cmd->dev_types, pv->dev)) {
|
@ -67,7 +67,7 @@ Version: 2.03.12
|
||||
%if 0%{?from_snapshot}
|
||||
Release: 0.1.20210426git%{shortcommit}%{?dist}%{?rel_suffix}
|
||||
%else
|
||||
Release: 2%{?dist}%{?rel_suffix}
|
||||
Release: 3%{?dist}%{?rel_suffix}
|
||||
%endif
|
||||
License: GPLv2
|
||||
URL: http://sourceware.org/lvm2
|
||||
@ -81,6 +81,13 @@ Patch1: lvm2-set-default-preferred_names.patch
|
||||
Patch2: lvm2-test-skip-problematic-tests.patch
|
||||
# BZ 1961890
|
||||
Patch3: lvm2-2_03_13-vdo-fix-preload-of-kvdo.patch
|
||||
# BZ 1964622:
|
||||
Patch4: lvm2-2_03_13-lvremove-fix-removing-thin-pool-with-writecache-on-d.patch
|
||||
# BZ 1957898:
|
||||
Patch5: lvm2-2_03_13-enable-command-syntax-for-thin-and-writecache.patch
|
||||
# BZ 1872903:
|
||||
Patch6: lvm2-2_03_13-writecache-fix-lv_on_pmem.patch
|
||||
Patch7: lvm2-2_03_13-writecache-don-t-pvmove-device-used-by-writecache.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
%if %{enable_testsuite}
|
||||
@ -144,6 +151,10 @@ or more physical volumes and creating one or more logical volumes
|
||||
%patch1 -p1 -b .backup1
|
||||
%patch2 -p1 -b .backup2
|
||||
%patch3 -p1 -b .backup3
|
||||
%patch4 -p1 -b .backup4
|
||||
%patch5 -p1 -b .backup5
|
||||
%patch6 -p1 -b .backup6
|
||||
%patch7 -p1 -b .backup7
|
||||
|
||||
%build
|
||||
%global _default_pid_dir /run
|
||||
@ -752,6 +763,10 @@ An extensive functional testsuite for LVM2.
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Jun 15 2021 Marian Csontos <mcsontos@redhat.com> - 2.03.12-3
|
||||
- Allow extending thin-pool data with writecache on top.
|
||||
- Fix removing thin-pool data converted to writeache.
|
||||
|
||||
* Tue Jun 01 2021 Marian Csontos <mcsontos@redhat.com> - 2.03.12-2
|
||||
- Fix loading of VDO kernel module.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user