summaryrefslogtreecommitdiff
path: root/test/shell/lvconvert-raid-reshape-striped_to_linear.sh
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2017-03-01 18:50:35 +0100
committerHeinz Mauelshagen <heinzm@redhat.com>2017-03-01 18:50:35 +0100
commit48778bc5038f0384bf0e6ad43bac048f6700637b (patch)
tree2b44b7830c273ee3f5711056a28cd3f34283889d /test/shell/lvconvert-raid-reshape-striped_to_linear.sh
parent62abae1525cec51279c39c5127afaced8f0463e2 (diff)
downloadlvm2-48778bc5038f0384bf0e6ad43bac048f6700637b.tar.gz
lvconvert: add new reporting fields for reshaping
During an ongoing reshape, the MD kernel runtime reads stripes relative to data_offset and starts storing the reshaped stripes (with new raid layout and/or new stripesize and/or new number of stripes) relative to new_data_offset. This is to avoid writing over any data in place which is non-atomic by nature and thus be recoverable without data loss in the transition. MD uses the term out-of-place reshaping for it. There's 2 other areas we don't have report capability for: - number of data stripes vs. total stripes (e.g. raid6 with 7 stripes toal has 5 data stripes) - number of (rotating) parity/syndrome chunks (e.g. raid6 with 7 stripes toal has 2 parity chunks; one per stripe for P-Syndrome and another one for Q-Syndrome) Thus, add the following reportable keys: - reshape_len (in current units) - reshape_len_le (in logical extents) - data_offset (in sectors) - new_data_offset ( " ) - data_stripes - parity_chunks Enhance lvchange-raid.sh, lvconvert-raid-reshape-linear_to_striped.sh, lvconvert-raid-reshape-striped_to_linear.sh, lvconvert-raid-reshape.sh and lvconvert-raid-takeover.sh to make use of new keys. Related: rhbz834579 Related: rhbz1191935 Related: rhbz1191978
Diffstat (limited to 'test/shell/lvconvert-raid-reshape-striped_to_linear.sh')
-rw-r--r--test/shell/lvconvert-raid-reshape-striped_to_linear.sh24
1 files changed, 23 insertions, 1 deletions
diff --git a/test/shell/lvconvert-raid-reshape-striped_to_linear.sh b/test/shell/lvconvert-raid-reshape-striped_to_linear.sh
index fc87cafb8..dd857c1a5 100644
--- a/test/shell/lvconvert-raid-reshape-striped_to_linear.sh
+++ b/test/shell/lvconvert-raid-reshape-striped_to_linear.sh
@@ -26,8 +26,10 @@ aux prepare_vg 5
# 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 ""
echo y|mkfs -t ext4 $DM_DEV_DIR/$vg/$lv1
fsck -fn $DM_DEV_DIR/$vg/$lv1
@@ -35,14 +37,22 @@ fsck -fn $DM_DEV_DIR/$vg/$lv1
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 ""
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 64 $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 ""
aux wait_for_sync $vg $lv1
fsck -fn $DM_DEV_DIR/$vg/$lv1
@@ -52,33 +62,45 @@ fsck -fn $DM_DEV_DIR/$vg/$lv1
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 "64.00k"
check lv_first_seg_field $vg/$lv1 regionsize "1.00m"
+check lv_first_seg_field $vg/$lv1 reshape_len 10
+# for slv in {0..4}
+# do
+# check lv_first_seg_field $vg/${lv1}_rimage_${slv} reshape_len 2
+# done
aux wait_for_sync $vg $lv1 1
fsck -fn $DM_DEV_DIR/$vg/$lv1
# Remove the now freed legs
lvconvert --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 "64.00k"
check lv_first_seg_field $vg/$lv1 regionsize "1.00m"
+check lv_first_seg_field $vg/$lv1 reshape_len 4
# 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 ""
-# Convert raid5_n -> striped
+# Convert raid5_n -> 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 ""
vgremove -ff $vg