2020-06-15 22:08:28 +03:00
#!/usr/bin/env bash
# Copyright (C) 2018 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
aux have_integrity 1 5 0 || skip
mnt = "mnt"
mkdir -p $mnt
# scsi_debug devices with 512 LBS 512 PBS
aux prepare_scsi_debug_dev 256
check sysfs " $( < SCSI_DEBUG_DEV) " queue/logical_block_size "512"
check sysfs " $( < SCSI_DEBUG_DEV) " queue/physical_block_size "512"
aux prepare_devs 2 64
vgcreate $vg " $dev1 " " $dev2 "
blockdev --getss " $dev1 "
blockdev --getpbsz " $dev1 "
blockdev --getss " $dev2 "
blockdev --getpbsz " $dev2 "
# add integrity while LV is inactive
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
umount $mnt
lvchange -an $vg
lvconvert --raidintegrity y $vg /$lv1
lvchange -ay $vg
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
# add integrity while LV is active, fs unmounted
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
umount $mnt
lvchange -an $vg
lvchange -ay $vg
lvconvert --raidintegrity y $vg /$lv1
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
# add integrity while LV is active, fs mounted
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
lvconvert --raidintegrity y $vg /$lv1
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
vgremove -ff $vg
aux cleanup_scsi_debug_dev
sleep 1
# scsi_debug devices with 4K LBS and 4K PBS
aux prepare_scsi_debug_dev 256 sector_size = 4096
check sysfs " $( < SCSI_DEBUG_DEV) " queue/logical_block_size "4096"
check sysfs " $( < SCSI_DEBUG_DEV) " queue/physical_block_size "4096"
aux prepare_devs 2 64
vgcreate $vg " $dev1 " " $dev2 "
blockdev --getss " $dev1 "
blockdev --getpbsz " $dev1 "
blockdev --getss " $dev2 "
blockdev --getpbsz " $dev2 "
# add integrity while LV is inactive
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
umount $mnt
lvchange -an $vg
lvconvert --raidintegrity y $vg /$lv1
lvchange -ay $vg
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
# add integrity while LV is active, fs unmounted
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
umount $mnt
lvchange -an $vg
lvchange -ay $vg
lvconvert --raidintegrity y $vg /$lv1
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
# add integrity while LV is active, fs mounted
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
lvconvert --raidintegrity y $vg /$lv1
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
vgremove -ff $vg
aux cleanup_scsi_debug_dev
sleep 1
# scsi_debug devices with 512 LBS and 4K PBS
aux prepare_scsi_debug_dev 256 sector_size = 512 physblk_exp = 3
check sysfs " $( < SCSI_DEBUG_DEV) " queue/logical_block_size "512"
check sysfs " $( < SCSI_DEBUG_DEV) " queue/physical_block_size "4096"
aux prepare_devs 2 64
vgcreate $vg " $dev1 " " $dev2 "
blockdev --getss " $dev1 "
blockdev --getpbsz " $dev1 "
blockdev --getss " $dev2 "
blockdev --getpbsz " $dev2 "
# add integrity while LV is inactive
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
umount $mnt
lvchange -an $vg
lvconvert --raidintegrity y $vg /$lv1
lvchange -ay $vg
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
# add integrity while LV is active, fs unmounted
2020-06-16 19:59:59 +03:00
# lvconvert will use ribs 512 to avoid increasing LBS from 512 to 4k on active LV
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-16 19:59:59 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
umount $mnt
lvchange -an $vg
lvchange -ay $vg
lvconvert --raidintegrity y $vg /$lv1
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-16 19:59:59 +03:00
lvs -a -o+devices $vg
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
2020-06-15 22:08:28 +03:00
# add integrity while LV is active, fs mounted
2020-06-16 19:59:59 +03:00
# lvconvert will use ribs 512 to avoid increasing LBS from 512 to 4k on active LV
2020-06-15 22:08:28 +03:00
lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
2022-09-09 14:33:28 +03:00
mkfs.ext4 " $DM_DEV_DIR / $vg / $lv1 "
2020-06-15 22:08:28 +03:00
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
echo "hello world" > $mnt /hello
lvconvert --raidintegrity y $vg /$lv1
2023-04-20 18:08:42 +03:00
aux wait_recalc $vg /${ lv1 } _rimage_0
aux wait_recalc $vg /${ lv1 } _rimage_1
2020-06-15 22:08:28 +03:00
lvs -a -o+devices $vg
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvchange -ay $vg /$lv1
mount " $DM_DEV_DIR / $vg / $lv1 " $mnt
cat $mnt /hello | grep "hello world"
umount $mnt
lvchange -an $vg /$lv1
lvremove $vg /$lv1
vgremove -ff $vg
aux cleanup_scsi_debug_dev