summaryrefslogtreecommitdiff
path: root/test/shell/lvconvert-raid-reshape-stripes-load-fail.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/shell/lvconvert-raid-reshape-stripes-load-fail.sh')
-rw-r--r--test/shell/lvconvert-raid-reshape-stripes-load-fail.sh84
1 files changed, 84 insertions, 0 deletions
diff --git a/test/shell/lvconvert-raid-reshape-stripes-load-fail.sh b/test/shell/lvconvert-raid-reshape-stripes-load-fail.sh
new file mode 100644
index 0000000..b35cd8d
--- /dev/null
+++ b/test/shell/lvconvert-raid-reshape-stripes-load-fail.sh
@@ -0,0 +1,84 @@
+#!/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, MA2110-1301 USA
+
+
+SKIP_WITH_LVMPOLLD=1
+
+. lib/inittest
+
+# Test reshaping under io load
+
+case "$(uname -r)" in
+ 3.10.0-862*) skip "Cannot run this test on unfixed kernel." ;;
+esac
+
+which mkfs.ext4 || skip
+aux have_raid 1 13 2 || skip
+
+mount_dir="mnt"
+
+cleanup_mounted_and_teardown()
+{
+ umount "$mount_dir" || true
+ aux teardown
+}
+
+aux prepare_pvs 16 32
+
+get_devs
+
+vgcreate $SHARED -s 1M "$vg" "${DEVICES[@]}"
+
+trap 'cleanup_mounted_and_teardown' EXIT
+
+# Create 10-way striped raid5 (11 legs total)
+lvcreate --yes --type raid5_ls --stripesize 64K --stripes 10 -L4 -n$lv1 $vg
+check lv_first_seg_field $vg/$lv1 segtype "raid5_ls"
+check lv_first_seg_field $vg/$lv1 stripesize "64.00k"
+check lv_first_seg_field $vg/$lv1 data_stripes 10
+check lv_first_seg_field $vg/$lv1 stripes 11
+wipefs -a "$DM_DEV_DIR/$vg/$lv1"
+mkfs -t ext4 "$DM_DEV_DIR/$vg/$lv1"
+fsck -fn "$DM_DEV_DIR/$vg/$lv1"
+
+mkdir -p "$mount_dir"
+mount "$DM_DEV_DIR/$vg/$lv1" "$mount_dir"
+mkdir -p "$mount_dir/1" "$mount_dir/2"
+
+
+echo 3 >/proc/sys/vm/drop_caches
+cp -r /usr/bin "$mount_dir/1" &>/dev/null &
+cp -r /usr/bin "$mount_dir/2" &>/dev/null &
+sync &
+
+aux wait_for_sync $vg $lv1
+aux delay_dev "$dev2" 0 100
+
+# Reshape it to 15 data stripes
+lvconvert --yes --stripes 15 $vg/$lv1
+aux disable_dev $dev1
+aux delay_dev "$dev2" 0 0
+check lv_first_seg_field $vg/$lv1 segtype "raid5_ls"
+check lv_first_seg_field $vg/$lv1 stripesize "64.00k"
+check lv_first_seg_field $vg/$lv1 data_stripes 15
+check lv_first_seg_field $vg/$lv1 stripes 16
+
+kill -9 %%
+wait
+rm -fr "$mount_dir/[12]"
+
+sync
+umount "$mount_dir"
+
+fsck -fn "$DM_DEV_DIR/$vg/$lv1"
+
+vgremove -ff $vg