summaryrefslogtreecommitdiff
path: root/test/shell/lvconvert-raid-regionsize.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/shell/lvconvert-raid-regionsize.sh')
-rw-r--r--test/shell/lvconvert-raid-regionsize.sh104
1 files changed, 104 insertions, 0 deletions
diff --git a/test/shell/lvconvert-raid-regionsize.sh b/test/shell/lvconvert-raid-regionsize.sh
new file mode 100644
index 0000000..23d54d0
--- /dev/null
+++ b/test/shell/lvconvert-raid-regionsize.sh
@@ -0,0 +1,104 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2017 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
+
+which mkfs.ext4 || skip
+aux have_raid 1 9 0 || skip
+
+aux prepare_vg 6
+
+function _test_regionsize
+{
+ local type=$1
+ local regionsize=$2
+ local regionsize_str=$3
+ local vg=$4
+ local lv=$5
+
+ lvconvert --type "$type" --yes -R "$regionsize" "$vg/$lv"
+ check lv_field $vg/$lv regionsize "$regionsize_str"
+
+ not lvconvert --regionsize "$regionsize" "$vg/$lv" 2>err
+ grep "is already" err
+
+ fsck -fn "$DM_DEV_DIR/$vg/$lv"
+}
+
+function _test_regionsizes
+{
+ # FIXME: have to provide raid type or region size ain't set until cli validation merged
+ local type=$1
+
+ # Test RAID regionsize changes
+ _test_regionsize "$type" 128K "128.00k" $vg $lv1
+ _test_regionsize "$type" 256K "256.00k" $vg $lv1
+ not _test_regionsize "$type" 1K "1.00k" $vg $lv1
+ _test_regionsize "$type" 1m "1.00m" $vg $lv1
+ not _test_regionsize "$type" 1G "1.00g" $vg $lv1
+ not _test_regionsize "$type" 16K "16.00k" $vg $lv1
+}
+
+# Create 3-way raid1
+lvcreate --yes -aey --type raid1 -m 2 -R64K -L8M -n $lv1 $vg
+check lv_field $vg/$lv1 segtype "raid1"
+check lv_field $vg/$lv1 stripes 3
+check lv_field $vg/$lv1 regionsize "64.00k"
+mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1"
+aux wait_for_sync $vg $lv1
+fsck -fn "$DM_DEV_DIR/$vg/$lv1"
+
+_test_regionsizes raid1
+
+# Clean up
+lvremove --yes $vg
+
+# Needs reshaping kernel for raid6 conversion
+if aux have_raid 1 14 0; then
+# Create 5-way raid6
+lvcreate --yes -aey --type raid6 -i 3 --stripesize 128K -R 256K -L8M -n $lv1 $vg
+check lv_field $vg/$lv1 segtype "raid6"
+check lv_field $vg/$lv1 stripes 5
+check lv_field $vg/$lv1 stripesize "128.00k"
+check lv_field $vg/$lv1 regionsize "256.00k"
+mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1"
+aux wait_for_sync $vg $lv1
+fsck -fn "$DM_DEV_DIR/$vg/$lv1"
+
+_test_regionsizes raid6
+
+# Clean up
+lvremove --yes $vg
+else
+ echo "Skipping RAID6 tests"
+fi
+
+if aux have_raid 1 12 0; then
+# Create 6-way raid01
+lvcreate --yes -aey --type raid10 -i 3 -m 1 --stripesize 128K -R 256K -L8M -n $lv1 $vg
+check lv_field $vg/$lv1 segtype "raid10"
+check lv_field $vg/$lv1 stripes 6
+check lv_field $vg/$lv1 stripesize "128.00k"
+check lv_field $vg/$lv1 regionsize "256.00k"
+mkfs.ext4 -t ext4 "$DM_DEV_DIR/$vg/$lv1"
+aux wait_for_sync $vg $lv1
+fsck -fn "$DM_DEV_DIR/$vg/$lv1"
+
+_test_regionsizes raid10
+else
+ echo "Skipping RAID10 tests"
+fi
+
+vgremove -ff $vg