2017-12-13 02:55:06 +01:00
#!/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
2018-05-31 16:18:53 -05:00
2017-12-13 02:55:06 +01:00
SKIP_WITH_LVMPOLLD = 1
. lib/inittest
2020-09-14 21:23:16 +02:00
case " $( uname -r) " in
2021-03-16 21:40:30 +01:00
3.10.0-862*) skip "Cannot run this test on unfixed kernel." ; ;
2020-09-14 21:23:16 +02:00
esac
2017-12-13 02:55:06 +01:00
# Test reshaping under io load
which mkfs.ext4 || skip
2018-05-04 16:56:38 +02:00
aux have_raid 1 13 2 || skip
2017-12-13 02:55:06 +01:00
2017-12-13 14:39:06 +01:00
mount_dir = "mnt"
2017-12-13 02:55:06 +01:00
2017-12-13 14:39:06 +01:00
cleanup_mounted_and_teardown( )
{
umount " $mount_dir " || true
aux teardown
}
2017-12-13 02:55:06 +01:00
aux prepare_pvs 16 32
get_devs
2018-05-31 16:18:53 -05:00
vgcreate $SHARED -s 1M " $vg " " ${ DEVICES [@] } "
2017-12-13 02:55:06 +01:00
2017-12-13 14:39:06 +01:00
trap 'cleanup_mounted_and_teardown' EXIT
2018-08-31 15:07:24 +02:00
# Create 10-way striped raid5 (11 legs total)
2019-10-31 13:14:50 +01:00
lvcreate --yes --type raid5_ls --stripesize 64K --stripes 10 -L4 -n$lv1 $vg
2017-12-13 02:55:06 +01:00
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
2023-06-20 21:19:43 +02:00
wipefs -a " $DM_DEV_DIR / $vg / $lv1 "
mkfs -t ext4 " $DM_DEV_DIR // $vg / $lv1 "
2017-12-13 02:55:06 +01:00
2017-12-13 14:39:06 +01:00
mkdir -p $mount_dir
mount " $DM_DEV_DIR / $vg / $lv1 " $mount_dir
mkdir -p $mount_dir /1 $mount_dir /2
2017-12-13 02:55:06 +01:00
echo 3 >/proc/sys/vm/drop_caches
2017-12-13 14:39:06 +01:00
cp -r /usr/bin $mount_dir /1 >/dev/null 2>/dev/null &
cp -r /usr/bin $mount_dir /2 >/dev/null 2>/dev/null &
2017-12-13 02:55:06 +01:00
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 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
2017-12-13 14:39:06 +01:00
umount $mount_dir
2017-12-13 02:55:06 +01:00
fsck -fn " $DM_DEV_DIR / $vg / $lv1 "
vgremove -ff $vg