diff options
Diffstat (limited to 'test/shell/lvconvert-raid-reshape-striped_to_linear.sh')
-rw-r--r-- | test/shell/lvconvert-raid-reshape-striped_to_linear.sh | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/test/shell/lvconvert-raid-reshape-striped_to_linear.sh b/test/shell/lvconvert-raid-reshape-striped_to_linear.sh new file mode 100644 index 0000000..ab075e1 --- /dev/null +++ b/test/shell/lvconvert-raid-reshape-striped_to_linear.sh @@ -0,0 +1,115 @@ +#!/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 + +aux lvmconf 'activation/raid_region_size = 512' + +which mkfs.ext4 || skip +aux have_raid 1 14 0 || skip + +aux prepare_vg 5 20 + +# +# Test single step linear -> striped conversion +# + +# Create 4-way striped LV +lvcreate -aey -i 4 -I 32k -L 16M -n $lv1 $vg +check lv_field $vg/$lv1 segtype "striped" +check lv_field $vg/$lv1 data_stripes 4 +check lv_field $vg/$lv1 stripes 4 +check lv_field $vg/$lv1 stripesize "32.00k" +check lv_field $vg/$lv1 reshape_len_le "" +wipefs -a "$DM_DEV_DIR/$vg/$lv1" +mkfs -t ext4 "$DM_DEV_DIR/$vg/$lv1" +fsck -fn "$DM_DEV_DIR/$vg/$lv1" + +# Convert striped -> raid5(_n) +lvconvert -y --ty raid5 -R 128k $vg/$lv1 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" +check lv_field $vg/$lv1 segtype "raid5_n" +check lv_field $vg/$lv1 data_stripes 4 +check lv_field $vg/$lv1 stripes 5 +check lv_field $vg/$lv1 stripesize "32.00k" +check lv_field $vg/$lv1 regionsize "128.00k" +check lv_field $vg/$lv1 reshape_len_le 0 +aux wait_for_sync $vg $lv1 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" + +# Extend raid5_n LV by factor 4 to keep size once linear +lvresize -y -L 64M $vg/$lv1 +aux wait_for_sync $vg $lv1 + +check lv_field $vg/$lv1 segtype "raid5_n" +check lv_field $vg/$lv1 data_stripes 4 +check lv_field $vg/$lv1 stripes 5 +check lv_field $vg/$lv1 stripesize "32.00k" +check lv_field $vg/$lv1 regionsize "128.00k" +check lv_field $vg/$lv1 reshape_len_le "0" +aux wait_for_sync $vg $lv1 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" + +# Convert raid5_n LV to 1 stripe (2 legs total), +# 64k stripesize and 1024k regionsize +# FIXME: "--type" superfluous (cli fix needed) +lvconvert -y -f --ty raid5_n --stripes 1 -I 64k -R 1024k $vg/$lv1 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" +check lv_first_seg_field $vg/$lv1 segtype "raid5_n" +check lv_first_seg_field $vg/$lv1 data_stripes 1 +check lv_first_seg_field $vg/$lv1 stripes 5 +check lv_first_seg_field $vg/$lv1 stripesize "32.00k" +check lv_first_seg_field $vg/$lv1 regionsize "1.00m" +check lv_first_seg_field $vg/$lv1 reshape_len_le 10 +# for slv in {0..4} +# do +# check lv_first_seg_field $vg/${lv1}_rimage_${slv} reshape_len_le 2 +# done +aux wait_for_sync $vg $lv1 1 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" + +# Remove the now freed legs +lvconvert -y --stripes 1 $vg/$lv1 +check lv_first_seg_field $vg/$lv1 segtype "raid5_n" +check lv_first_seg_field $vg/$lv1 data_stripes 1 +check lv_first_seg_field $vg/$lv1 stripes 2 +check lv_first_seg_field $vg/$lv1 stripesize "32.00k" +check lv_first_seg_field $vg/$lv1 regionsize "1.00m" +check lv_first_seg_field $vg/$lv1 reshape_len_le 4 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" + +# Convert raid5_n to raid1 +lvconvert -y --type raid1 $vg/$lv1 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" +check lv_first_seg_field $vg/$lv1 segtype "raid1" +check lv_first_seg_field $vg/$lv1 data_stripes 2 +check lv_first_seg_field $vg/$lv1 stripes 2 +check lv_first_seg_field $vg/$lv1 stripesize "0" +check lv_first_seg_field $vg/$lv1 regionsize "1.00m" +check lv_first_seg_field $vg/$lv1 reshape_len_le "" +fsck -fn "$DM_DEV_DIR/$vg/$lv1" + +# Convert raid1 -> linear +lvconvert -y --type linear $vg/$lv1 +fsck -fn "$DM_DEV_DIR/$vg/$lv1" +check lv_first_seg_field $vg/$lv1 segtype "linear" +check lv_first_seg_field $vg/$lv1 data_stripes 1 +check lv_first_seg_field $vg/$lv1 stripes 1 +check lv_first_seg_field $vg/$lv1 stripesize "0" +check lv_first_seg_field $vg/$lv1 regionsize "0" +check lv_first_seg_field $vg/$lv1 reshape_len_le "" +fsck -fn "$DM_DEV_DIR/$vg/$lv1" + +vgremove -ff $vg |