[lvm-devel] stable-2.02 - tests: check thin-pool corner case allocs

Zdenek Kabelac zkabelac at sourceware.org
Wed Jan 13 10:09:19 UTC 2021


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=b9d31664dc8272e58c4233d34dcde8ce1447314f
Commit:        b9d31664dc8272e58c4233d34dcde8ce1447314f
Parent:        194630be52b6459b331fcf338539c82263125162
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Tue Jan 12 23:26:16 2021 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Wed Jan 13 10:41:17 2021 +0100

tests: check thin-pool corner case allocs

---
 test/shell/lvcreate-thin-limits.sh | 30 ++++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/test/shell/lvcreate-thin-limits.sh b/test/shell/lvcreate-thin-limits.sh
index 6a9c33d82..5dcc160dc 100644
--- a/test/shell/lvcreate-thin-limits.sh
+++ b/test/shell/lvcreate-thin-limits.sh
@@ -27,13 +27,35 @@ aux can_use_16T || skip
 aux have_thin 1 0 0 || skip
 which mkfs.ext4 || skip
 
-aux prepare_pvs 1 16777216
+# 16T device
+aux prepare_pvs 2 8388608
 get_devs
 
-vgcreate $SHARED -s 4K "$vg" "${DEVICES[@]}"
+# gives 16777215M device
+vgcreate $SHARED -s 4M "$vg" "${DEVICES[@]}"
 
-not lvcreate -T -L15.995T --poolmetadatasize 5G $vg/pool
+# For 1st. pass only single PV
+lvcreate -l100%PV --name $lv1 $vg "$dev2"
 
-lvs -ao+seg_pe_ranges $vg
+for i in 1 0
+do
+	SIZE=$(get vg_field "$vg" vg_free --units m)
+	SIZE=${SIZE%%\.*}
+
+	# ~16T - 2 * 5G + something  -> should not fit
+	not lvcreate -Zn -T -L$(( SIZE - 2 * 5 * 1024 + 1 )) --poolmetadatasize 5G $vg/pool
+
+	check vg_field "$vg" lv_count "$i"
+
+	# Should fit  data + metadata + pmspare
+	lvcreate -Zn -T -L$(( SIZE - 2 * 5 * 1024 )) --poolmetadatasize 5G $vg/pool
+
+	check vg_field "$vg" vg_free "0"
+
+	lvs -ao+seg_pe_ranges $vg
+
+        # Remove everything for 2nd. pass
+	lvremove -ff $vg
+done
 
 vgremove -ff $vg




More information about the lvm-devel mailing list