Blame SOURCES/lvm2-2_03_12-tests-check-16G-thin-pool-metadata-size.patch

cdbae0
 test/shell/thin-16g.sh | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++
cdbae0
 1 file changed, 88 insertions(+)
cdbae0
 create mode 100644 test/shell/thin-16g.sh
cdbae0
cdbae0
diff --git a/test/shell/thin-16g.sh b/test/shell/thin-16g.sh
cdbae0
new file mode 100644
cdbae0
index 0000000..ee7e22e
cdbae0
--- /dev/null
cdbae0
+++ b/test/shell/thin-16g.sh
cdbae0
@@ -0,0 +1,88 @@
cdbae0
+#!/usr/bin/env bash
cdbae0
+
cdbae0
+# Copyright (C) 2021 Red Hat, Inc. All rights reserved.
cdbae0
+#
cdbae0
+# This copyrighted material is made available to anyone wishing to use,
cdbae0
+# modify, copy, or redistribute it subject to the terms and conditions
cdbae0
+# of the GNU General Public License v.2.
cdbae0
+#
cdbae0
+# You should have received a copy of the GNU General Public License
cdbae0
+# along with this program; if not, write to the Free Software Foundation,
cdbae0
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
cdbae0
+
cdbae0
+# Test usability of 16g thin pool metadata  LV
cdbae0
+
cdbae0
+
cdbae0
+SKIP_WITH_LVMPOLLD=1
cdbae0
+
cdbae0
+. lib/inittest
cdbae0
+
cdbae0
+aux have_thin 1 0 0 || skip
cdbae0
+
cdbae0
+aux prepare_vg 1 50000
cdbae0
+
cdbae0
+lvcreate -T -L10 --poolmetadatasize 16g $vg/pool
cdbae0
+check lv_field $vg/pool_tmeta size "<15.88g"
cdbae0
+lvremove -f $vg
cdbae0
+
cdbae0
+# Cropped way
cdbae0
+lvcreate -T -L10 --poolmetadatasize 16g --config 'allocation/thin_pool_crop_metadata=1' $vg/pool
cdbae0
+check lv_field $vg/pool_tmeta size "15.81g"
cdbae0
+lvremove -f $vg
cdbae0
+
cdbae0
+lvcreate -L16G -n meta $vg
cdbae0
+lvcreate -L10  -n pool $vg
cdbae0
+lvconvert --yes --thinpool $vg/pool --poolmetadata meta
cdbae0
+# Uncropped size 33554432 sectors - 16GiB
cdbae0
+dmsetup table ${vg}-pool_tmeta | grep 33554432
cdbae0
+lvremove -f $vg
cdbae0
+
cdbae0
+# Uses 20G metadata volume, but crops the size in DM table
cdbae0
+lvcreate -L20G -n meta $vg
cdbae0
+lvcreate -L10  -n pool $vg
cdbae0
+lvconvert --yes --thinpool $vg/pool --poolmetadata meta --config 'allocation/thin_pool_crop_metadata=1'
cdbae0
+check lv_field $vg/lvol0_pmspare size "16.00g"
cdbae0
+# Size should be cropped to 33161216 sectors  ~15.81GiB
cdbae0
+dmsetup table ${vg}-pool_tmeta | grep 33161216
cdbae0
+
cdbae0
+# Also size remains unchanged with activation has no cropping,
cdbae0
+# but metadata have no CROP_METADATA flag set
cdbae0
+lvchange -an $vg
cdbae0
+lvchange -ay $vg
cdbae0
+# Size still stays cropped to 33161216 sectors  ~15.81GiB
cdbae0
+dmsetup table ${vg}-pool_tmeta | grep 33161216
cdbae0
+lvremove -f $vg
cdbae0
+
cdbae0
+# Minimal size is 2M
cdbae0
+lvcreate -L1M -n meta $vg
cdbae0
+lvcreate -L10 -n pool $vg
cdbae0
+not lvconvert --yes --thinpool $vg/pool --poolmetadata meta
cdbae0
+lvremove -f $vg
cdbae0
+
cdbae0
+# Uses 20G metadata volume, but crops the size in DM table
cdbae0
+lvcreate -L1 --poolmetadatasize 10G -T $vg/pool
cdbae0
+lvresize -L+10G $vg/pool_tmeta --config 'allocation/thin_pool_crop_metadata=1'
cdbae0
+check lv_field $vg/lvol0_pmspare size "15.81g"
cdbae0
+# Size should be cropped to 33161216 sectors  ~15.81GiB
cdbae0
+dmsetup table ${vg}-pool_tmeta | grep 33161216
cdbae0
+
cdbae0
+# Without cropping we can grop to ~15.88GiB
cdbae0
+lvresize -L+10G $vg/pool_tmeta
cdbae0
+check lv_field $vg/lvol0_pmspare size "<15.88g"
cdbae0
+lvremove -f $vg
cdbae0
+
cdbae0
+# User has already 'bigger' metadata and wants them uncropped
cdbae0
+lvcreate -L16G -n meta $vg
cdbae0
+lvcreate -L10  -n pool $vg
cdbae0
+lvconvert --yes --thinpool $vg/pool --poolmetadata meta --config 'allocation/thin_pool_crop_metadata=1'
cdbae0
+
cdbae0
+# No change with cropping
cdbae0
+lvresize -l+1 $vg/pool_tmeta --config 'allocation/thin_pool_crop_metadata=1'
cdbae0
+dmsetup table ${vg}-pool_tmeta | grep 33161216
cdbae0
+
cdbae0
+# Resizes to 'uncropped' size 16GiB with ANY size
cdbae0
+lvresize -l+1 $vg/pool_tmeta
cdbae0
+dmsetup table ${vg}-pool_tmeta | grep 33554432
cdbae0
+check lv_field $vg/pool_tmeta size "16.00g"
cdbae0
+
cdbae0
+vgremove -ff $vg