diff --git a/0142-integrity-allow-creating-imeta-with-more-than-one-se.patch b/0142-integrity-allow-creating-imeta-with-more-than-one-se.patch new file mode 100644 index 0000000..0268186 --- /dev/null +++ b/0142-integrity-allow-creating-imeta-with-more-than-one-se.patch @@ -0,0 +1,241 @@ +From d91484630a168c8b5616f0b83c454a349648c53c Mon Sep 17 00:00:00 2001 +From: David Teigland +Date: Mon, 13 Oct 2025 14:36:58 -0500 +Subject: [PATCH 1/2] integrity: allow creating imeta with more than one + segment + +The imeta LV is already permitted to have more than one segment when +extending, so there's no reason to prevent this in the initial state. + +(cherry picked from commit 724747d7729c38133c4d71f96edd6e2be9dd44a0) +--- + lib/metadata/integrity_manip.c | 5 - + test/shell/integrity-imeta-segs.sh | 200 +++++++++++++++++++++++++++++ + 2 files changed, 200 insertions(+), 5 deletions(-) + create mode 100755 test/shell/integrity-imeta-segs.sh + +diff --git a/lib/metadata/integrity_manip.c b/lib/metadata/integrity_manip.c +index e053ac5f6..84ce99798 100644 +--- a/lib/metadata/integrity_manip.c ++++ b/lib/metadata/integrity_manip.c +@@ -131,11 +131,6 @@ static int _lv_create_integrity_metadata(struct cmd_context *cmd, + return 0; + } + +- if (dm_list_size(&lv->segments) > 1) { +- log_error("Integrity metadata uses more than one segment."); +- return 0; +- } +- + *meta_lv = lv; + return 1; + } +diff --git a/test/shell/integrity-imeta-segs.sh b/test/shell/integrity-imeta-segs.sh +new file mode 100755 +index 000000000..4df1a7dda +--- /dev/null ++++ b/test/shell/integrity-imeta-segs.sh +@@ -0,0 +1,200 @@ ++#!/usr/bin/env bash ++ ++# Copyright (C) 2025 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 ++ ++# Test creating integrity metadata LV requiring multiple LV segments ++ ++SKIP_WITH_LOW_SPACE=256 ++ ++. lib/inittest ++ ++aux have_integrity 1 5 0 || skip ++ ++which mkfs.xfs || skip ++mnt="mnt" ++mkdir -p $mnt ++ ++# Use awk instead of anoyingly long log out from printf ++#printf "%0.sA" {1..16384} >> fileA ++awk 'BEGIN { while (z++ < 16384) printf "A" }' > fileA ++awk 'BEGIN { while (z++ < 16384) printf "B" }' > fileB ++awk 'BEGIN { while (z++ < 16384) printf "C" }' > fileC ++ ++# generate random data ++dd if=/dev/urandom of=randA bs=512K count=2 ++dd if=/dev/urandom of=randB bs=512K count=3 ++dd if=/dev/urandom of=randC bs=512K count=4 ++ ++_prepare_vg() { ++ vgcreate $SHARED $vg "$dev1" "$dev2" ++ pvs ++} ++ ++_add_data_to_lv() { ++ mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" ++ ++ mount "$DM_DEV_DIR/$vg/$lv1" $mnt ++ ++ # add original data ++ cp randA $mnt ++ cp randB $mnt ++ cp randC $mnt ++ mkdir $mnt/1 ++ cp fileA $mnt/1 ++ cp fileB $mnt/1 ++ cp fileC $mnt/1 ++ mkdir $mnt/2 ++ cp fileA $mnt/2 ++ cp fileB $mnt/2 ++ cp fileC $mnt/2 ++ ++ umount $mnt ++} ++ ++_verify_data_on_lv() { ++ mount "$DM_DEV_DIR/$vg/$lv1" $mnt ++ ++ diff randA $mnt/randA ++ diff randB $mnt/randB ++ diff randC $mnt/randC ++ diff fileA $mnt/1/fileA ++ diff fileB $mnt/1/fileB ++ diff fileC $mnt/1/fileC ++ diff fileA $mnt/2/fileA ++ diff fileB $mnt/2/fileB ++ diff fileC $mnt/2/fileC ++ ++ umount $mnt ++} ++ ++_replace_data_on_lv() { ++ mount "$DM_DEV_DIR/$vg/$lv1" $mnt ++ ++ rm $mnt/randA ++ rm $mnt/randB ++ rm $mnt/randC ++ rm $mnt/1/fileA ++ rm $mnt/1/fileB ++ rm $mnt/1/fileC ++ rm $mnt/2/fileA ++ rm $mnt/2/fileB ++ rm $mnt/2/fileC ++ ++ cp randA $mnt ++ cp randB $mnt ++ cp randC $mnt ++ cp fileA $mnt/1 ++ cp fileB $mnt/1 ++ cp fileC $mnt/1 ++ cp fileA $mnt/2 ++ cp fileB $mnt/2 ++ cp fileC $mnt/2 ++ ++ umount $mnt ++} ++ ++# Create a raid LV with multi-segment images (based on an example of vg metadata) ++# Strategy: Fragment the PV by creating/removing temporary LVs, causing the raid ++# images to be allocated in multiple non-contiguous segments. When adding integrity, ++# the imeta will likely also need multiple segments due to the fragmented free space. ++ ++# Use smaller extent size to reduce total device size needed ++# With 2MB extents, a 400MB raid LV can have multi-segment images with smaller devices ++aux prepare_devs 2 256 ++vgcreate -s 2m $SHARED $vg "$dev1" "$dev2" ++ ++# Two-phase fragmentation strategy: ++# Phase 1: Create some larger LVs, then create the raid LV which will consume the gaps ++# Phase 2: Create small fragments in the remaining space where imeta will allocate ++ ++# Phase 1: Create large fragments so the raid LV will have 2-3 segments ++lvcreate -n frag1 -L 60M -an $vg "$dev1" ++lvcreate -n frag2 -L 60M -an $vg "$dev2" ++ ++lvcreate -n temp1 -L 80M -an $vg "$dev1" ++lvcreate -n temp2 -L 80M -an $vg "$dev2" ++ ++lvcreate -n frag3 -L 40M -an $vg "$dev1" ++lvcreate -n frag4 -L 40M -an $vg "$dev2" ++ ++# Remove temp1 and temp2, leaving large gaps for the raid LV ++lvremove -y $vg/temp1 $vg/temp2 ++ ++pvs -o+pv_free,pv_used ++ ++# Now create a raid1 LV that will use the large fragmented gaps ++# This will result in raid images with 2 segments ++lvcreate --type raid1 -m1 -n $lv1 -L 120M -an $vg ++ ++lvchange -ay $vg/$lv1 ++_add_data_to_lv ++lvchange -an $vg/$lv1 ++ ++lvs -a -o+devices,seg_count $vg ++ ++# Check if the rimage has multiple segments (should be 2) ++check lv_field $vg/${lv1}_rimage_0 seg_count 2 ++check lv_field $vg/${lv1}_rimage_1 seg_count 2 ++ ++# Phase 2: Now fragment the remaining free space into small gaps for imeta ++# The remaining free space should be ~70MB on each device ++# Create 6MB fragments leaving 6MB gaps ++for i in {1..6}; do ++ lvcreate -n perm${i} -L 6M -an $vg "$dev1" 2>/dev/null || break ++ lvcreate -n temp${i} -L 6M -an $vg "$dev1" 2>/dev/null || break ++done ++ ++for i in {1..6}; do ++ lvcreate -n perm${i}_2 -L 6M -an $vg "$dev2" 2>/dev/null || break ++ lvcreate -n temp${i}_2 -L 6M -an $vg "$dev2" 2>/dev/null || break ++done ++ ++# Remove temp LVs, leaving 6MB (3-extent) gaps ++for i in {1..6}; do ++ lvremove -y $vg/temp${i} 2>/dev/null || true ++ lvremove -y $vg/temp${i}_2 2>/dev/null || true ++done ++ ++pvs -o+pv_free,pv_used ++lvs -a -o+devices,seg_count $vg ++ ++# Now try to add integrity ++# With a 120MB LV, imeta needs ~8MB (4 extents with 2MB extent size) ++# The fragmented free space (only 6MB/3-extent gaps) should cause imeta allocation ++# to require multiple segments. ++lvchange -an $vg/$lv1 ++lvconvert --raidintegrity y $vg/$lv1 ++ ++lvs -a -o+devices $vg ++ ++lvchange -ay $vg/$lv1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++_verify_data_on_lv ++lvextend -L+4M $vg/$lv1 ++_verify_data_on_lv ++_replace_data_on_lv ++lvconvert --raidintegrity n $vg/$lv1 ++_verify_data_on_lv ++ ++# Clean up ++lvremove -y $vg/$lv1 || true ++ ++# Remove all fragment LVs ++lvremove -y $vg/frag1 $vg/frag2 $vg/frag3 $vg/frag4 || true ++ ++# Remove all perm LVs ++for i in {1..6}; do ++ lvremove -y $vg/perm${i} 2>/dev/null || true ++ lvremove -y $vg/perm${i}_2 2>/dev/null || true ++done ++ ++vgremove -ff $vg +-- +2.52.0 + diff --git a/0143-test-Fix-integrity-tests.patch b/0143-test-Fix-integrity-tests.patch new file mode 100644 index 0000000..3488b47 --- /dev/null +++ b/0143-test-Fix-integrity-tests.patch @@ -0,0 +1,2377 @@ +From a344f6e02a5e3e556db7935d71b4cf6556d51b2f Mon Sep 17 00:00:00 2001 +From: Marian Csontos +Date: Tue, 9 Dec 2025 15:44:42 +0100 +Subject: [PATCH 2/2] test: Fix integrity tests + +--- + test/lib/aux.sh | 26 ++ + test/shell/dmsetup-integrity-keys.sh | 2 + + test/shell/integrity-blocksize-2.sh | 90 ++---- + test/shell/integrity-blocksize-3.sh | 203 +++++------- + test/shell/integrity-blocksize.sh | 243 +++++++------- + test/shell/integrity-dmeventd.sh | 114 +++---- + test/shell/integrity-imeta-segs.sh | 52 +-- + test/shell/integrity-large.sh | 51 +-- + test/shell/integrity-misc.sh | 110 +++---- + test/shell/integrity.sh | 454 +++++++++++++-------------- + 10 files changed, 621 insertions(+), 724 deletions(-) + +diff --git a/test/lib/aux.sh b/test/lib/aux.sh +index ca9406383..5a74657af 100644 +--- a/test/lib/aux.sh ++++ b/test/lib/aux.sh +@@ -1685,6 +1685,32 @@ wait_for_sync() { + return 1 + } + ++wait_recalc() { ++ local sync ++ local checklv=$1 ++ ++ for i in {1..100} ; do ++ sync=$(get lv_field "$checklv" sync_percent | cut -d. -f1) ++ echo "sync_percent is $sync" ++ ++ [[ "$sync" = "100" ]] && return ++ ++ sleep .1 ++ done ++ ++ # TODO: There is some strange bug, first leg of RAID with integrity ++ # enabled never gets in sync. I saw this in BB, but not when executing ++ # the commands manually ++# if test -z "$sync"; then ++# echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed" ++# dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" ++# exit ++# fi ++ echo "Timeout waiting for recalc." ++ dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" ++ return 1 ++} ++ + # Check if tests are running on 64bit architecture + can_use_16T() { + test "$(getconf LONG_BIT)" -eq 64 +diff --git a/test/shell/dmsetup-integrity-keys.sh b/test/shell/dmsetup-integrity-keys.sh +index cd98ead6d..a920ad8da 100644 +--- a/test/shell/dmsetup-integrity-keys.sh ++++ b/test/shell/dmsetup-integrity-keys.sh +@@ -42,6 +42,7 @@ test "$str" = "journal_crypt:$JOURNAL_CRYPT:$HEXKEY_32" + str=$(dmsetup table "$PREFIX-integrity" | cut -d ' ' -f 14) + test "$str" = "internal_hash:$INTERNAL_HASH_NOCRYPT" + ++aux udev_wait + dmsetup remove "$PREFIX-integrity" + dmsetup create "$PREFIX-integrity" --table "0 7856 integrity $DM_DEV_DIR/mapper/$PREFIX-zero 0 32 J 7 journal_sectors:88 interleave_sectors:32768 buffer_sectors:128 journal_watermark:50 commit_time:10000 internal_hash:$INTERNAL_HASH_CRYPT:$HEXKEY2_32 journal_crypt:$JOURNAL_CRYPT:$HEXKEY_32" + +@@ -54,5 +55,6 @@ test "$str" = "internal_hash:$INTERNAL_HASH_CRYPT:$HIDENKEY_32" + str=$(dmsetup table --showkeys "$PREFIX-integrity" | cut -d ' ' -f 14) + test "$str" = "internal_hash:$INTERNAL_HASH_CRYPT:$HEXKEY2_32" + ++aux udev_wait + dmsetup remove "$PREFIX-integrity" + dmsetup remove "$PREFIX-zero" +diff --git a/test/shell/integrity-blocksize-2.sh b/test/shell/integrity-blocksize-2.sh +index ae0e72ec6..c275d743b 100644 +--- a/test/shell/integrity-blocksize-2.sh ++++ b/test/shell/integrity-blocksize-2.sh +@@ -19,38 +19,7 @@ aux have_integrity 1 5 0 || skip + aux kernel_at_least 5 10 || export LVM_TEST_PREFER_BRD=0 + + mnt="mnt" +-mkdir -p $mnt +- +-_sync_percent() { +- local checklv=$1 +- get lv_field "$checklv" sync_percent | cut -d. -f1 +-} +- +-_wait_recalc() { +- local checklv=$1 +- +- for i in $(seq 1 10) ; do +- sync=$(_sync_percent "$checklv") +- echo "sync_percent is $sync" +- +- if test "$sync" = "100"; then +- return +- fi +- +- sleep 1 +- done +- +- # TODO: There is some strange bug, first leg of RAID with integrity +- # enabled never gets in sync. I saw this in BB, but not when executing +- # the commands manually +- if test -z "$sync"; then +- echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed" +- dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" +- exit +- fi +- echo "timeout waiting for recalc" +- return 1 +-} ++mkdir -p "$mnt" + + # prepare_devs uses ramdisk backing which has 512 LBS and 4K PBS + # This should cause mkfs.xfs to use 4K sector size, +@@ -67,19 +36,19 @@ blockdev --getpbsz "$dev2" + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++cat "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -88,19 +57,19 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello | grep "hello world" +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -109,22 +78,21 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++echo "hello world" > "$mnt/hello" + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-cat $mnt/hello | grep "hello world" +-umount $mnt ++grep "hello world" "$mnt/hello" ++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 ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + + vgremove -ff $vg +- +diff --git a/test/shell/integrity-blocksize-3.sh b/test/shell/integrity-blocksize-3.sh +index 7034bc362..d436fb234 100644 +--- a/test/shell/integrity-blocksize-3.sh ++++ b/test/shell/integrity-blocksize-3.sh +@@ -17,38 +17,7 @@ SKIP_WITH_LVMPOLLD=1 + aux have_integrity 1 5 0 || skip + + mnt="mnt" +-mkdir -p $mnt +- +-_sync_percent() { +- local checklv=$1 +- get lv_field "$checklv" sync_percent | cut -d. -f1 +-} +- +-_wait_recalc() { +- local checklv=$1 +- +- for i in $(seq 1 10) ; do +- sync=$(_sync_percent "$checklv") +- echo "sync_percent is $sync" +- +- if test "$sync" = "100"; then +- return +- fi +- +- sleep 1 +- done +- +- # TODO: There is some strange bug, first leg of RAID with integrity +- # enabled never gets in sync. I saw this in BB, but not when executing +- # the commands manually +- if test -z "$sync"; then +- echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed" +- dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" +- exit +- fi +- echo "timeout waiting for recalc" +- return 1 +-} ++mkdir -p "$mnt" + + # scsi_debug devices with 512 LBS 512 PBS + aux prepare_scsi_debug_dev 256 +@@ -66,19 +35,19 @@ blockdev --getpbsz "$dev2" + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++cat "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -86,19 +55,19 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello | grep "hello world" +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -106,20 +75,20 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++echo "hello world" > "$mnt/hello" + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-cat $mnt/hello | grep "hello world" +-umount $mnt ++grep "hello world" "$mnt/hello" ++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 ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -143,19 +112,19 @@ blockdev --getpbsz "$dev2" + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++cat "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -163,19 +132,19 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello | grep "hello world" +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -183,20 +152,20 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++echo "hello world" > "$mnt/hello" + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-cat $mnt/hello | grep "hello world" +-umount $mnt ++grep "hello world" "$mnt/hello" ++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 ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -220,19 +189,19 @@ blockdev --getpbsz "$dev2" + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++cat "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -241,19 +210,19 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello +-umount $mnt ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++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 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-cat $mnt/hello | grep "hello world" +-umount $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + +@@ -262,24 +231,22 @@ lvremove $vg/$lv1 + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-echo "hello world" > $mnt/hello ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++echo "hello world" > "$mnt/hello" + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg +-cat $mnt/hello | grep "hello world" +-umount $mnt ++grep "hello world" "$mnt/hello" ++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 ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++grep "hello world" "$mnt/hello" ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + + vgremove -ff $vg + aux cleanup_scsi_debug_dev +-sleep 1 +- +diff --git a/test/shell/integrity-blocksize.sh b/test/shell/integrity-blocksize.sh +index bf8def4ac..7749fb002 100644 +--- a/test/shell/integrity-blocksize.sh ++++ b/test/shell/integrity-blocksize.sh +@@ -16,7 +16,7 @@ SKIP_WITH_LVMPOLLD=1 + + aux have_integrity 1 5 0 || skip + +-losetup -h | grep sector-size || skip ++losetup -h | grep sector-size || skip "Loop without sector-size support" + + + cleanup_mounted_and_teardown() +@@ -24,24 +24,24 @@ cleanup_mounted_and_teardown() + umount "$mnt" || true + vgremove -ff $vg1 $vg2 || true + +- test -n "${LOOP1-}" && { losetup -d "$LOOP1" || true ; } +- test -n "${LOOP2-}" && { losetup -d "$LOOP2" || true ; } +- test -n "${LOOP3-}" && { losetup -d "$LOOP3" || true ; } +- test -n "${LOOP4-}" && { losetup -d "$LOOP4" || true ; } ++ test -n "${LOOP1-}" && should losetup -d "$LOOP1" ++ test -n "${LOOP2-}" && should losetup -d "$LOOP2" ++ test -n "${LOOP3-}" && should losetup -d "$LOOP3" ++ test -n "${LOOP4-}" && should losetup -d "$LOOP4" + + rm -f loop[abcd] + aux teardown + } + + mnt="mnt" +-mkdir -p $mnt ++mkdir -p "$mnt" + + # Tests with fs block sizes require a libblkid version that shows BLOCK_SIZE + aux prepare_devs 1 + vgcreate $vg "$dev1" + lvcreate -n $lv1 -l8 $vg +-mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg/$lv1" | grep BLOCK_SIZE || skip ++mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" ++blkid -p "$DM_DEV_DIR/$vg/$lv1" | grep BLOCK_SIZE || skip + lvchange -an $vg + vgremove -ff $vg + +@@ -53,55 +53,49 @@ trap 'cleanup_mounted_and_teardown' EXIT + #truncate -s 64M loopc + #truncate -s 64M loopd + +-dd if=/dev/zero of=loopa bs=1M count=64 oflag=sync +-dd if=/dev/zero of=loopb bs=1M count=64 oflag=sync +-dd if=/dev/zero of=loopc bs=1M count=64 oflag=sync +-dd if=/dev/zero of=loopd bs=1M count=64 oflag=sync ++dd if=/dev/zero of=loopa bs=1M count=64 conv=fdatasync ++dd if=/dev/zero of=loopb bs=1M count=64 conv=fdatasync ++dd if=/dev/zero of=loopc bs=1M count=64 conv=fdatasync ++dd if=/dev/zero of=loopd bs=1M count=64 conv=fdatasync + + LOOP1=$(losetup -f loopa --show) || skip "Cannot find free loop device" + LOOP2=$(losetup -f loopb --show) || skip "Cannot find free loop device" + LOOP3=$(losetup -f loopc --sector-size 4096 --show) || skip "Loop cannot handle --sector-size 4096" + LOOP4=$(losetup -f loopd --sector-size 4096 --show) || skip "Loop cannot handle --sector-size 4096" + +-echo $LOOP1 +-echo $LOOP2 +-echo $LOOP3 +-echo $LOOP4 ++echo "$LOOP1" ++echo "$LOOP2" ++echo "$LOOP3" ++echo "$LOOP4" + +-aux extend_filter "a|$LOOP1|" +-aux extend_filter "a|$LOOP2|" +-aux extend_filter "a|$LOOP3|" +-aux extend_filter "a|$LOOP4|" +-aux extend_devices "$LOOP1" +-aux extend_devices "$LOOP2" +-aux extend_devices "$LOOP3" +-aux extend_devices "$LOOP4" ++aux extend_filter "a|$LOOP1|" "a|$LOOP2|" "a|$LOOP3|" "a|$LOOP4|" ++aux extend_devices "$LOOP1" "$LOOP2" "$LOOP3" "$LOOP4" + + aux lvmconf 'devices/scan = "/dev"' + +-vgcreate $vg1 $LOOP1 $LOOP2 +-vgcreate $vg2 $LOOP3 $LOOP4 ++vgcreate $vg1 -s 64k "$LOOP1" "$LOOP2" ++vgcreate $vg2 -s 64k "$LOOP3" "$LOOP4" + + # LOOP1/LOOP2 have LBS 512 and PBS 512 + # LOOP3/LOOP4 have LBS 4K and PBS 4K + +-blockdev --getss $LOOP1 +-blockdev --getpbsz $LOOP1 +-blockdev --getss $LOOP2 +-blockdev --getpbsz $LOOP2 +-blockdev --getss $LOOP3 +-blockdev --getpbsz $LOOP3 +-blockdev --getss $LOOP4 +-blockdev --getpbsz $LOOP4 ++blockdev --getss "$LOOP1" ++blockdev --getpbsz "$LOOP1" ++blockdev --getss "$LOOP2" ++blockdev --getpbsz "$LOOP2" ++blockdev --getss "$LOOP3" ++blockdev --getpbsz "$LOOP3" ++blockdev --getss "$LOOP4" ++blockdev --getpbsz "$LOOP4" + + # lvcreate on dev512, result 512 + lvcreate --type raid1 -m1 --raidintegrity y -l 8 -n $lv1 $vg1 +-pvck --dump metadata $LOOP1 | grep 'block_size = 512' ++pvck --dump metadata "$LOOP1" | grep 'block_size = 512' + lvremove -y $vg1/$lv1 + + # lvcreate on dev4k, result 4k + lvcreate --type raid1 -m1 --raidintegrity y -l 8 -n $lv1 $vg2 +-pvck --dump metadata $LOOP3 | grep 'block_size = 4096' ++pvck --dump metadata "$LOOP3" | grep 'block_size = 4096' + lvremove -y $vg2/$lv1 + + # lvcreate --bs 512 on dev4k, result fail +@@ -110,7 +104,7 @@ not lvcreate --type raid1 -m1 --raidintegrity y --raidintegrityblocksize 512 -l + # lvcreate --bs 4096 on dev512, result 4k + lvcreate --type raid1 -m1 --raidintegrity y --raidintegrityblocksize 4096 -l 8 -n $lv1 $vg1 + lvs -o raidintegrityblocksize $vg1/$lv1 | grep 4096 +-pvck --dump metadata $LOOP1 | grep 'block_size = 4096' ++pvck --dump metadata "$LOOP1" | grep 'block_size = 4096' + lvremove -y $vg1/$lv1 + + # Test an unknown fs block size by simply not creating a fs on the lv. +@@ -118,15 +112,15 @@ lvremove -y $vg1/$lv1 + # lvconvert on dev512, fsunknown, result 512 + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 + # clear any residual fs so that libblkid cannot find an fs block size +-aux wipefs_a /dev/$vg1/$lv1 ++aux wipefs_a "$DM_DEV_DIR/$vg1/$lv1" + lvconvert --raidintegrity y $vg1/$lv1 +-pvck --dump metadata $LOOP1 | grep 'block_size = 512' ++pvck --dump metadata "$LOOP1" | grep 'block_size = 512' + lvremove -y $vg1/$lv1 + + # lvconvert on dev4k, fsunknown, result 4k + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg2 + # clear any residual fs so that libblkid cannot find an fs block size +-aux wipefs_a /dev/$vg2/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg2/$lv1" + lvconvert --raidintegrity y $vg2/$lv1 + pvck --dump metadata $LOOP3 | grep 'block_size = 4096' + lvremove -y $vg2/$lv1 +@@ -134,123 +128,126 @@ lvremove -y $vg2/$lv1 + # lvconvert --bs 4k on dev512, fsunknown, result fail + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 + # clear any residual fs so that libblkid cannot find an fs block size +-aux wipefs_a /dev/$vg1/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" + not lvconvert --raidintegrity y --raidintegrityblocksize 4096 $vg1/$lv1 + lvremove -y $vg1/$lv1 + + # lvconvert --bs 512 on dev4k, fsunknown, result fail + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg2 + # clear any residual fs so that libblkid cannot find an fs block size +-aux wipefs_a /dev/$vg2/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg2/$lv1" + not lvconvert --raidintegrity y --raidintegrityblocksize 512 $vg2/$lv1 + lvremove -y $vg2/$lv1 + +-# lvconvert on dev512, xfs 512, result 512 ++# lvconvert on dev512, ext4 1024, result 1024 + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 +-aux wipefs_a /dev/$vg1/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg1/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"512\" ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" ++mkfs.ext4 "$DM_DEV_DIR/$vg1/$lv1" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | tee out ++grep BLOCK_SIZE=\"1024\" out + lvconvert --raidintegrity y $vg1/$lv1 +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"512\" +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-umount $mnt +-pvck --dump metadata $LOOP1 | grep 'block_size = 512' ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++umount "$mnt" ++pvck --dump metadata "$LOOP1" | grep 'block_size = 512' + lvremove -y $vg1/$lv1 + +-# lvconvert on dev4k, xfs 4096, result 4096 ++# lvconvert on dev4k, ext4 4096, result 4096 + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg2 +-aux wipefs_a /dev/$vg2/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg2/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" ++aux wipefs_a "$DM_DEV_DIR/$vg2/$lv1" ++mkfs.ext4 "$DM_DEV_DIR/$vg2/$lv1" ++blkid -p "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" + lvconvert --raidintegrity y $vg2/$lv1 +-blkid -c /dev/null "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" +-mount "$DM_DEV_DIR/$vg2/$lv1" $mnt +-umount $mnt ++blkid -p "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" ++mount "$DM_DEV_DIR/$vg2/$lv1" "$mnt" ++umount "$mnt" + pvck --dump metadata $LOOP3 | grep 'block_size = 4096' + lvremove -y $vg2/$lv1 + + # lvconvert on dev512, ext4 1024, result 1024 (LV active when adding) + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 +-aux wipefs_a /dev/$vg1/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" + mkfs.ext4 -b 1024 "$DM_DEV_DIR/$vg1/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" + lvconvert --raidintegrity y $vg1/$lv1 +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-umount $mnt +-pvck --dump metadata $LOOP1 | grep 'block_size = 512' ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++umount "$mnt" ++pvck --dump metadata "$LOOP1" | grep 'block_size = 512' + lvremove -y $vg1/$lv1 + + # lvconvert on dev512, ext4 1024, result 1024 (LV inactive when adding) + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 +-aux wipefs_a /dev/$vg1/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" + mkfs.ext4 -b 1024 "$DM_DEV_DIR/$vg1/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" + lvchange -an $vg1/$lv1 + lvconvert --raidintegrity y $vg1/$lv1 + lvchange -ay $vg1/$lv1 +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-umount $mnt +-pvck --dump metadata $LOOP1 | grep 'block_size = 1024' ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++umount "$mnt" ++pvck --dump metadata "$LOOP1" | grep 'block_size = 1024' + lvremove -y $vg1/$lv1 + + # lvconvert on dev4k, ext4 4096, result 4096 + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg2 +-aux wipefs_a /dev/$vg2/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg2/$lv1" + mkfs.ext4 "$DM_DEV_DIR/$vg2/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" ++blkid -p "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" + lvconvert --raidintegrity y $vg2/$lv1 +-blkid -c /dev/null "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" +-mount "$DM_DEV_DIR/$vg2/$lv1" $mnt +-umount $mnt +-pvck --dump metadata $LOOP3 | grep 'block_size = 4096' ++blkid -p "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" ++mount "$DM_DEV_DIR/$vg2/$lv1" "$mnt" ++umount "$mnt" ++pvck --dump metadata "$LOOP3" | grep 'block_size = 4096' + lvremove -y $vg2/$lv1 + +-# lvconvert --bs 512 on dev512, xfs 4096, result 512 ++dm_table | grep ${PREFIX} ++ ++# lvconvert --bs 512 on dev512, ext4 4096, result 512 + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 +-aux wipefs_a /dev/$vg1/$lv1 +-mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg1/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" ++mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg1/$lv1" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" + lvconvert --raidintegrity y --raidintegrityblocksize 512 $vg1/$lv1 + lvs -o raidintegrityblocksize $vg1/$lv1 | grep 512 +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-umount $mnt +-pvck --dump metadata $LOOP1 | grep 'block_size = 512' ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++umount "$mnt" ++pvck --dump metadata "$LOOP1" | grep 'block_size = 512' + lvremove -y $vg1/$lv1 + +-# lvconvert --bs 1024 on dev512, xfs 4096, result 1024 ++# lvconvert --bs 1024 on dev512, ext4 4096, result 1024 + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 +-aux wipefs_a /dev/$vg1/$lv1 +-mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg1/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" ++mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg1/$lv1" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" + lvchange -an $vg1/$lv1 + # lv needs to be inactive to increase LBS from 512 + lvconvert --raidintegrity y --raidintegrityblocksize 1024 $vg1/$lv1 + lvs -o raidintegrityblocksize $vg1/$lv1 | grep 1024 + lvchange -ay $vg1/$lv1 +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-umount $mnt +-pvck --dump metadata $LOOP1 | grep 'block_size = 1024' ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"4096\" ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++umount "$mnt" ++pvck --dump metadata "$LOOP1" | grep 'block_size = 1024' + lvremove -y $vg1/$lv1 + + # lvconvert --bs 512 on dev512, ext4 1024, result 512 + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 +-aux wipefs_a /dev/$vg1/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" + mkfs.ext4 -b 1024 "$DM_DEV_DIR/$vg1/$lv1" +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" + lvconvert --raidintegrity y --raidintegrityblocksize 512 $vg1/$lv1 +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-umount $mnt +-pvck --dump metadata $LOOP1 | grep 'block_size = 512' ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++umount "$mnt" ++pvck --dump metadata "$LOOP1" | grep 'block_size = 512' + lvremove -y $vg1/$lv1 + + # lvconvert --bs 512 on dev4k, ext4 4096, result fail + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg2 +-aux wipefs_a /dev/$vg2/$lv1 ++aux wipefs_a "$DM_DEV_DIR//$vg2/$lv1" + mkfs.ext4 "$DM_DEV_DIR/$vg2/$lv1" + not lvconvert --raidintegrity y --raidintegrityblocksize 512 $vg2/$lv1 + lvremove -y $vg2/$lv1 +@@ -260,41 +257,43 @@ lvremove -y $vg2/$lv1 + # TODO: lvconvert --bs 512, fsunknown, LBS 512, PBS 4k: result 512 + # TODO: lvconvert --bs 4k, fsunknown, LBS 512, PBS 4k: result 4k + +-# lvconvert on dev512, xfs 512, result 512, (detect fs with LV inactive) ++# lvconvert on dev512, ext4 1024, result 1024, (detect fs with LV inactive) + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg1 +-aux wipefs_a /dev/$vg1/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg1/$lv1" +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-echo "test" > $mnt/test +-umount $mnt +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"512\" ++aux wipefs_a "$DM_DEV_DIR//$vg1/$lv1" ++mkfs.ext4 "$DM_DEV_DIR/$vg1/$lv1" ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++echo "test" > "$mnt/test" ++umount "$mnt" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" + lvchange -an $vg1/$lv1 + lvconvert --raidintegrity y $vg1/$lv1 + lvchange -ay $vg1/$lv1 +-mount "$DM_DEV_DIR/$vg1/$lv1" $mnt +-cat $mnt/test +-umount $mnt +-blkid -c /dev/null "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"512\" +-pvck --dump metadata $LOOP1 | grep 'block_size = 512' ++mount "$DM_DEV_DIR/$vg1/$lv1" "$mnt" ++cat "$mnt/test" ++umount "$mnt" ++blkid -p "$DM_DEV_DIR/$vg1/$lv1" | grep BLOCK_SIZE=\"1024\" ++pvck --dump metadata "$LOOP1" | tee out ++grep 'block_size = 1024' out + lvchange -an $vg1/$lv1 + lvremove -y $vg1/$lv1 + +-# lvconvert on dev4k, xfs 4096, result 4096 (detect fs with LV inactive) ++# lvconvert on dev4k, ext4 4096, result 4096 (detect fs with LV inactive) + lvcreate --type raid1 -m1 -l 8 -n $lv1 $vg2 +-aux wipefs_a /dev/$vg2/$lv1 +-mkfs.xfs -f "$DM_DEV_DIR/$vg2/$lv1" +-mount "$DM_DEV_DIR/$vg2/$lv1" $mnt +-echo "test" > $mnt/test +-umount $mnt +-blkid -c /dev/null "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" ++aux wipefs_a "$DM_DEV_DIR//$vg2/$lv1" ++mkfs.ext4 "$DM_DEV_DIR/$vg2/$lv1" ++mount "$DM_DEV_DIR/$vg2/$lv1" "$mnt" ++echo "test" > "$mnt/test" ++umount "$mnt" ++blkid -p "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" + lvchange -an $vg2/$lv1 + lvconvert --raidintegrity y $vg2/$lv1 + lvchange -ay $vg2/$lv1 +-mount "$DM_DEV_DIR/$vg2/$lv1" $mnt +-cat $mnt/test +-umount $mnt +-blkid -c /dev/null "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" +-pvck --dump metadata $LOOP3 | grep 'block_size = 4096' ++mount "$DM_DEV_DIR/$vg2/$lv1" "$mnt" ++cat "$mnt/test" ++umount "$mnt" ++blkid -p "$DM_DEV_DIR/$vg2/$lv1" | grep BLOCK_SIZE=\"4096\" ++pvck --dump metadata "$LOOP3" | tee out ++grep 'block_size = 4096' out + lvchange -an $vg2/$lv1 + lvremove -y $vg2/$lv1 + +diff --git a/test/shell/integrity-dmeventd.sh b/test/shell/integrity-dmeventd.sh +index 9049eb0f7..3da55ca11 100644 +--- a/test/shell/integrity-dmeventd.sh ++++ b/test/shell/integrity-dmeventd.sh +@@ -14,13 +14,17 @@ SKIP_WITH_LVMPOLLD=1 + + . lib/inittest + +-which mkfs.xfs || skip ++which mkfs.ext4 || skip + aux have_integrity 1 5 0 || skip + # Avoid 4K ramdisk devices on older kernels + aux kernel_at_least 5 10 || export LVM_TEST_PREFER_BRD=0 + ++aux lvmconf 'activation/raid_fault_policy = "allocate"' ++ ++aux prepare_dmeventd ++ + mnt="mnt" +-mkdir -p $mnt ++mkdir -p "$mnt" + + aux prepare_devs 6 64 + +@@ -41,7 +45,7 @@ _prepare_vg() { + } + + _add_new_data_to_mnt() { +- mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv1" ++ mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" + + mount "$DM_DEV_DIR/$vg/$lv1" $mnt + +@@ -94,51 +98,34 @@ _verify_data_on_lv() { + lvchange -an $vg/$lv1 + } + +-_sync_percent() { +- local checklv=$1 +- get lv_field "$checklv" sync_percent | cut -d. -f1 +-} +- +-_wait_recalc() { +- local checklv=$1 +- +- for i in $(seq 1 10) ; do +- sync=$(_sync_percent "$checklv") +- echo "sync_percent is $sync" +- +- if test "$sync" = "100"; then +- return +- fi +- ++# Wait for dmeventd repair to complete by checking if specified devices ++# are no longer present in lvs output. Times out after 11 seconds. ++# Usage: _wait_for_repair dev1 [dev2 ...] ++_wait_for_repair() { ++ local dev ++ touch "$mnt/touch" ++ sync ++ for i in {1..13}; do + sleep 1 ++ lvs -a -o+devices $vg > out 2>&1 || true ++ for dev in "$@"; do ++ grep -q "$dev" out && continue 2 ++ done ++ # All devices gone, repair completed ++ return 0 + done +- +- # TODO: There is some strange bug, first leg of RAID with integrity +- # enabled never gets in sync. I saw this in BB, but not when executing +- # the commands manually +- if test -z "$sync"; then +- echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed" +- dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" +- exit +- fi +- echo "timeout waiting for recalc" +- return 1 ++ die "dmeventd repair timeout - expected devices removed: $*." + } + +-aux lvmconf \ +- 'activation/raid_fault_policy = "allocate"' +- +-aux prepare_dmeventd +- + # raid1, one device fails, dmeventd calls repair + + vgcreate $SHARED $vg "$dev1" "$dev2" "$dev3" "$dev4" + lvcreate --type raid1 -m 2 --raidintegrity y --ignoremonitoring -l 8 -n $lv1 $vg "$dev1" "$dev2" "$dev3" + lvchange --monitor y $vg/$lv1 + lvs -a -o+devices $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 + aux wait_for_sync $vg $lv1 + _add_new_data_to_mnt + +@@ -146,8 +133,7 @@ aux disable_dev "$dev2" + + # wait for dmeventd to call lvconvert --repair which should + # replace dev2 with dev4 +-sync +-sleep 5 ++_wait_for_repair "$dev2" + + lvs -a -o+devices $vg | tee out + not grep "$dev2" out +@@ -164,7 +150,7 @@ grep "$dev4" out + grep "$dev1" out + grep "$dev3" out + +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -176,19 +162,17 @@ vgcreate $SHARED $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" + lvcreate --type raid1 -m 2 --raidintegrity y --ignoremonitoring -l 8 -n $lv1 $vg "$dev1" "$dev2" "$dev3" + lvchange --monitor y $vg/$lv1 + lvs -a -o+devices $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 + aux wait_for_sync $vg $lv1 + _add_new_data_to_mnt + +-aux disable_dev "$dev2" +-aux disable_dev "$dev1" ++aux disable_dev "$dev1" "$dev2" + + # wait for dmeventd to call lvconvert --repair which should + # replace dev1 and dev2 with dev4 and dev5 +-sync +-sleep 5 ++_wait_for_repair "$dev1" "$dev2" + + lvs -a -o+devices $vg | tee out + not grep "$dev1" out +@@ -200,8 +184,7 @@ grep "$dev3" out + _add_more_data_to_mnt + _verify_data_on_mnt + +-aux enable_dev "$dev1" +-aux enable_dev "$dev2" ++aux enable_dev "$dev1" "$dev2" + + lvs -a -o+devices $vg | tee out + not grep "$dev1" out +@@ -210,7 +193,7 @@ grep "$dev4" out + grep "$dev5" out + grep "$dev3" out + +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -222,11 +205,11 @@ vgcreate $SHARED $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6" + lvcreate --type raid6 --raidintegrity y --ignoremonitoring -l 8 -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" + lvchange --monitor y $vg/$lv1 + lvs -a -o+devices $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 +-_wait_recalc $vg/${lv1}_rimage_4 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_3 ++aux wait_recalc $vg/${lv1}_rimage_4 + aux wait_for_sync $vg $lv1 + _add_new_data_to_mnt + +@@ -234,8 +217,7 @@ aux disable_dev "$dev2" + + # wait for dmeventd to call lvconvert --repair which should + # replace dev2 with dev6 +-sync +-sleep 5 ++_wait_for_repair "$dev2" + + lvs -a -o+devices $vg | tee out + not grep "$dev2" out +@@ -250,7 +232,7 @@ lvs -a -o+devices $vg | tee out + not grep "$dev2" out + grep "$dev6" out + +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -262,10 +244,10 @@ vgcreate $SHARED $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" + lvcreate --type raid10 --raidintegrity y --ignoremonitoring -l 8 -n $lv1 $vg "$dev1" "$dev2" "$dev3" "$dev4" + lvchange --monitor y $vg/$lv1 + lvs -a -o+devices $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_3 + aux wait_for_sync $vg $lv1 + _add_new_data_to_mnt + +@@ -273,8 +255,7 @@ aux disable_dev "$dev1" + + # wait for dmeventd to call lvconvert --repair which should + # replace dev1 with dev5 +-sync +-sleep 5 ++_wait_for_repair "$dev1" + + lvs -a -o+devices $vg | tee out + not grep "$dev1" out +@@ -289,9 +270,8 @@ lvs -a -o+devices $vg | tee out + not grep "$dev1" out + grep "$dev5" out + +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 + vgremove -ff $vg +- +diff --git a/test/shell/integrity-imeta-segs.sh b/test/shell/integrity-imeta-segs.sh +index 4df1a7dda..e82e8ab8d 100755 +--- a/test/shell/integrity-imeta-segs.sh ++++ b/test/shell/integrity-imeta-segs.sh +@@ -18,9 +18,9 @@ SKIP_WITH_LOW_SPACE=256 + + aux have_integrity 1 5 0 || skip + +-which mkfs.xfs || skip ++which mkfs.ext4 || skip + mnt="mnt" +-mkdir -p $mnt ++mkdir -p "$mnt" + + # Use awk instead of anoyingly long log out from printf + #printf "%0.sA" {1..16384} >> fileA +@@ -39,7 +39,7 @@ _prepare_vg() { + } + + _add_data_to_lv() { +- mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" ++ mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" + + mount "$DM_DEV_DIR/$vg/$lv1" $mnt + +@@ -76,29 +76,29 @@ _verify_data_on_lv() { + } + + _replace_data_on_lv() { +- mount "$DM_DEV_DIR/$vg/$lv1" $mnt +- +- rm $mnt/randA +- rm $mnt/randB +- rm $mnt/randC +- rm $mnt/1/fileA +- rm $mnt/1/fileB +- rm $mnt/1/fileC +- rm $mnt/2/fileA +- rm $mnt/2/fileB +- rm $mnt/2/fileC +- +- cp randA $mnt +- cp randB $mnt +- cp randC $mnt +- cp fileA $mnt/1 +- cp fileB $mnt/1 +- cp fileC $mnt/1 +- cp fileA $mnt/2 +- cp fileB $mnt/2 +- cp fileC $mnt/2 +- +- umount $mnt ++ mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++ ++ rm "$mnt/randA" ++ rm "$mnt/randB" ++ rm "$mnt/randC" ++ rm "$mnt/1/fileA" ++ rm "$mnt/1/fileB" ++ rm "$mnt/1/fileC" ++ rm "$mnt/2/fileA" ++ rm "$mnt/2/fileB" ++ rm "$mnt/2/fileC" ++ ++ cp randA "$mnt" ++ cp randB "$mnt" ++ cp randC "$mnt" ++ cp fileA "$mnt/1" ++ cp fileB "$mnt/1" ++ cp fileC "$mnt/1" ++ cp fileA "$mnt/2" ++ cp fileB "$mnt/2" ++ cp fileC "$mnt/2" ++ ++ umount "$mnt" + } + + # Create a raid LV with multi-segment images (based on an example of vg metadata) +diff --git a/test/shell/integrity-large.sh b/test/shell/integrity-large.sh +index 16e28fb9d..ef6a2e23f 100644 +--- a/test/shell/integrity-large.sh ++++ b/test/shell/integrity-large.sh +@@ -21,9 +21,9 @@ aux have_integrity 1 5 0 || skip + which mkfs.xfs || skip + + mnt="mnt" +-mkdir -p $mnt ++mkdir -p "$mnt" + +-# raid1 LV needs to be extended to 512MB to test imeta being exended ++# raid1 LV needs to be extended to 512MB to test imeta being extended + aux prepare_devs 4 632 + + # this test may consume lot of disk space - so make sure cleaning works +@@ -92,42 +92,11 @@ _verify_data_on_lv() { + umount $mnt + } + +-_sync_percent() { +- local checklv=$1 +- get lv_field "$checklv" sync_percent | cut -d. -f1 +-} +- +-_wait_recalc() { +- local checklv=$1 +- +- for i in $(seq 1 20) ; do +- sync=$(_sync_percent "$checklv") +- echo "sync_percent is $sync" +- +- if test "$sync" = "100"; then +- return +- fi +- +- sleep 1 +- done +- +- # TODO: There is some strange bug, first leg of RAID with integrity +- # enabled never gets in sync. I saw this in BB, but not when executing +- # the commands manually +- if test -z "$sync"; then +- echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed" +- dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" +- exit +- fi +- echo "timeout waiting for recalc" +- return 1 +-} +- + # lvextend to 512MB is needed for the imeta LV to + # be extended from 4MB to 8MB. + + _prepare_vg +-lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg ++lvcreate --type raid1 -m1 -n $lv1 -L 300 $vg + lvchange -an $vg/$lv1 + lvchange -ay $vg/$lv1 + _add_data_to_lv +@@ -135,8 +104,8 @@ _add_data_to_lv + lvchange -an $vg/$lv1 + lvconvert --raidintegrity y $vg/$lv1 + lvchange -ay $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg + _verify_data_on_lv + lvchange -an $vg/$lv1 +@@ -144,8 +113,8 @@ lvextend -L 512M $vg/$lv1 + lvs -a -o+devices $vg + lvchange -ay $vg/$lv1 + _verify_data_on_lv +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg + check lv_field $vg/${lv1}_rimage_0_imeta size "12.00m" + check lv_field $vg/${lv1}_rimage_1_imeta size "12.00m" +@@ -166,8 +135,8 @@ lvs -a -o+devices $vg + # adding integrity again will allocate new 12MB imeta LVs + # on dev3,dev4 + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg + check lv_field $vg/${lv1}_rimage_0_imeta size "20.00m" + check lv_field $vg/${lv1}_rimage_1_imeta size "20.00m" +@@ -177,7 +146,7 @@ lvremove $vg/$lv1 + + # As the test doesn't wait for full resync + # delay legs so not all data need to be written. +-aux delay_dev "$dev1" 1000 0 "$(( $(get first_extent_sector "$dev1") + 16000 )):1200000" ++aux delay_dev "$dev1" 400 0 "$(( $(get first_extent_sector "$dev1") + 16000 )):1200000" + aux delay_dev "$dev2" 0 10 "$(( $(get first_extent_sector "$dev2") + 16000 )):1200000" + + +diff --git a/test/shell/integrity-misc.sh b/test/shell/integrity-misc.sh +index e6c108a0f..dee1f8656 100644 +--- a/test/shell/integrity-misc.sh ++++ b/test/shell/integrity-misc.sh +@@ -14,13 +14,13 @@ SKIP_WITH_LVMPOLLD=1 + + . lib/inittest + +-which mkfs.xfs || skip ++which mkfs.ext4 || skip + aux have_integrity 1 5 0 || skip + # Avoid 4K ramdisk devices on older kernels + aux kernel_at_least 5 10 || export LVM_TEST_PREFER_BRD=0 + + mnt="mnt" +-mkdir -p $mnt ++mkdir -p "$mnt" + + aux prepare_devs 5 64 + +@@ -41,7 +41,7 @@ _prepare_vg() { + } + + _add_new_data_to_mnt() { +- mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" ++ mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1" + + mount "$DM_DEV_DIR/$vg/$lv1" $mnt + +@@ -94,49 +94,18 @@ _verify_data_on_lv() { + lvchange -an $vg/$lv1 + } + +-_sync_percent() { +- local checklv=$1 +- get lv_field "$checklv" sync_percent | cut -d. -f1 +-} +- +-_wait_sync() { +- local checklv=$1 +- +- for i in $(seq 1 10) ; do +- sync=$(_sync_percent "$checklv") +- echo "sync_percent is $sync" +- +- if test "$sync" = "100"; then +- return +- fi +- +- sleep 1 +- done +- +- # TODO: There is some strange bug, first leg of RAID with integrity +- # enabled never gets in sync. I saw this in BB, but not when executing +- # the commands manually +- if test -z "$sync"; then +- echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed" +- dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" +- exit +- fi +- echo "timeout waiting for recalc" +- return 1 +-} +- + # lvrename + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_sync $vg/${lv1}_rimage_0 +-_wait_sync $vg/${lv1}_rimage_1 +-_wait_sync $vg/$lv1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt +-umount $mnt ++umount "$mnt" + lvrename $vg/$lv1 $vg/$lv2 +-mount "$DM_DEV_DIR/$vg/$lv2" $mnt ++mount "$DM_DEV_DIR/$vg/$lv2" "$mnt" + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv2 + lvremove $vg/$lv2 + vgremove -ff $vg +@@ -146,9 +115,9 @@ vgremove -ff $vg + # lv must be active + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" +-_wait_sync $vg/${lv1}_rimage_0 +-_wait_sync $vg/${lv1}_rimage_1 +-_wait_sync $vg/$lv1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + lvs -o raidintegritymode $vg/$lv1 | grep journal + _add_new_data_to_mnt + lvconvert --replace "$dev1" $vg/$lv1 "$dev3" +@@ -159,7 +128,7 @@ grep "$dev3" out + not grep "$dev1" out + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -169,9 +138,9 @@ vgremove -ff $vg + # same as prev but with bitmap mode + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y --raidintegritymode bitmap -n $lv1 -l 8 $vg "$dev1" "$dev2" +-_wait_sync $vg/${lv1}_rimage_0 +-_wait_sync $vg/${lv1}_rimage_1 +-_wait_sync $vg/$lv1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + lvs -o raidintegritymode $vg/$lv1 | grep bitmap + _add_new_data_to_mnt + lvconvert --replace "$dev1" $vg/$lv1 "$dev3" +@@ -182,7 +151,7 @@ grep "$dev3" out + not grep "$dev1" out + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -194,9 +163,9 @@ vgremove -ff $vg + # (like lvconvert --replace does for a dev that's not missing). + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" +-_wait_sync $vg/${lv1}_rimage_0 +-_wait_sync $vg/${lv1}_rimage_1 +-_wait_sync $vg/$lv1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + aux disable_dev "$dev2" + lvs -a -o+devices $vg > out +@@ -209,7 +178,7 @@ not grep "$dev2" out + not grep unknown out + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + aux enable_dev "$dev2" +@@ -223,11 +192,11 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" +-_wait_sync $vg/${lv1}_rimage_0 +-_wait_sync $vg/${lv1}_rimage_1 +-_wait_sync $vg/$lv1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + aux disable_dev "$dev2" + lvs -a -o+devices $vg +@@ -236,10 +205,35 @@ not lvchange -ay --activationmode degraded $vg/$lv1 + not lvchange -ay --activationmode partial $vg/$lv1 + lvconvert --raidintegrity n $vg/$lv1 + lvchange -ay --activationmode degraded $vg/$lv1 +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++_add_more_data_to_mnt ++_verify_data_on_mnt ++umount "$mnt" ++lvchange -an $vg/$lv1 ++lvremove $vg/$lv1 ++aux enable_dev "$dev2" ++vgremove -ff $vg ++ ++# When disks for raid images are missing, vgreduce --removemissing --force ++# should remove the missing images from the raid LV. ++_prepare_vg ++lvcreate --type raid1 -m2 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" "$dev3" ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 ++_add_new_data_to_mnt ++aux disable_dev "$dev2" ++lvs -a -o+devices,segtype $vg |tee out ++# The vgreduce uses error target for missing image ++vgreduce --removemissing --force $vg ++lvs -a -o+devices,segtype $vg |tee out ++cat out ++not grep "$dev2" out ++grep error out + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + lvremove $vg/$lv1 + aux enable_dev "$dev2" +diff --git a/test/shell/integrity.sh b/test/shell/integrity.sh +index 293cde84a..608dac367 100644 +--- a/test/shell/integrity.sh ++++ b/test/shell/integrity.sh +@@ -14,27 +14,28 @@ SKIP_WITH_LVMPOLLD=1 + + . lib/inittest + +-which mkfs.xfs || skip +-which xfs_growfs || skip ++test "${LVM_VALGRIND:-0}" -eq 0 || skip # too slow test for valgrind ++which mkfs.ext4 || skip ++which resize2fs || skip + aux have_integrity 1 5 0 || skip + # Avoid 4K ramdisk devices on older kernels + aux kernel_at_least 5 10 || export LVM_TEST_PREFER_BRD=0 + + mnt="mnt" +-mkdir -p $mnt ++mkdir -p "$mnt" + + aux prepare_devs 5 64 + + # Use awk instead of anoyingly long log out from printf + #printf "%0.sA" {1..16384} >> fileA + awk 'BEGIN { while (z++ < 16384) printf "A" }' > fileA +-awk 'BEGIN { while (z++ < 16384) printf "B" }' > fileB ++awk 'BEGIN { while (z++ < 4096) printf "B" ; while (z++ < 16384) printf "b" }' > fileB + awk 'BEGIN { while (z++ < 16384) printf "C" }' > fileC + + # generate random data +-dd if=/dev/urandom of=randA bs=512K count=2 +-dd if=/dev/urandom of=randB bs=512K count=3 +-dd if=/dev/urandom of=randC bs=512K count=4 ++dd if=/dev/urandom of=randA bs=512K count=2 2>/dev/null ++dd if=/dev/urandom of=randB bs=512K count=3 2>/dev/null ++dd if=/dev/urandom of=randC bs=512K count=4 2>/dev/null + + _prepare_vg() { + # zero devs so we are sure to find the correct file data +@@ -49,18 +50,18 @@ _prepare_vg() { + } + + _test_fs_with_read_repair() { +- mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv1" ++ mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg/$lv1" + +- mount "$DM_DEV_DIR/$vg/$lv1" $mnt ++ mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" + +- cp randA $mnt +- cp randB $mnt +- cp randC $mnt +- cp fileA $mnt +- cp fileB $mnt +- cp fileC $mnt ++ cp randA "$mnt" ++ cp randB "$mnt" ++ cp randC "$mnt" ++ cp fileA "$mnt" ++ cp fileB "$mnt" ++ cp fileC "$mnt" + +- umount $mnt ++ umount "$mnt" + lvchange -an $vg/$lv1 + + for dev in "$@"; do +@@ -74,15 +75,15 @@ _test_fs_with_read_repair() { + + lvchange -ay $vg/$lv1 + +- mount "$DM_DEV_DIR/$vg/$lv1" $mnt +- cmp -b $mnt/fileA fileA +- cmp -b $mnt/fileB fileB +- cmp -b $mnt/fileC fileC +- umount $mnt ++ mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++ cmp -b "$mnt/fileA" fileA ++ cmp -b "$mnt/fileB" fileB ++ cmp -b "$mnt/fileC" fileC ++ umount "$mnt" + } + + _add_new_data_to_mnt() { +- mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv1" ++ mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg/$lv1" + + mount "$DM_DEV_DIR/$vg/$lv1" $mnt + +@@ -135,45 +136,16 @@ _verify_data_on_lv() { + lvchange -an $vg/$lv1 + } + +-_sync_percent() { +- local checklv=$1 +- get lv_field "$checklv" sync_percent | cut -d. -f1 +-} +- +-_wait_recalc() { +- local checklv=$1 +- +- for i in $(seq 1 10) ; do +- sync=$(_sync_percent "$checklv") +- echo "sync_percent is $sync" +- +- if test "$sync" = "100"; then +- return +- fi +- +- sleep 1 +- done +- +- # TODO: There is some strange bug, first leg of RAID with integrity +- # enabled never gets in sync. I saw this in BB, but not when executing +- # the commands manually +- if test -z "$sync"; then +- echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed" +- dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}" +- exit +- fi +- echo "timeout waiting for recalc" +- return 1 +-} +- + # Test corrupting data on an image and verifying that + # it is detected by integrity and corrected by raid. + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 ++lvchange $vg/$lv1 --writemostly "$dev2" + _test_fs_with_read_repair "$dev1" + lvs -o integritymismatches $vg/${lv1}_rimage_0 |tee mismatch + not grep 0 mismatch +@@ -186,10 +158,13 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m2 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" "$dev3" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 ++lvchange $vg/$lv1 --writemostly "$dev2" ++lvchange $vg/$lv1 --writemostly "$dev3" + _test_fs_with_read_repair "$dev1" "$dev2" + lvs -o integritymismatches $vg/${lv1}_rimage_0 |tee mismatch + not grep 0 mismatch +@@ -201,11 +176,12 @@ lvremove $vg/$lv1 + vgremove -ff $vg + + _prepare_vg +-lvcreate --type raid4 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" "$dev3" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/$lv1 ++lvcreate --type raid4 --raidintegrity y -n $lv1 -I 4K -l 8 $vg "$dev1" "$dev2" "$dev3" ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 + _test_fs_with_read_repair "$dev1" "$dev2" "$dev3" + lvs -o integritymismatches $vg/${lv1}_rimage_0 + lvs -o integritymismatches $vg/${lv1}_rimage_1 +@@ -218,11 +194,12 @@ lvremove $vg/$lv1 + vgremove -ff $vg + + _prepare_vg +-lvcreate --type raid5 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" "$dev3" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/$lv1 ++lvcreate --type raid5 --raidintegrity y -n $lv1 -I 4K -l 8 $vg "$dev1" "$dev2" "$dev3" ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 + _test_fs_with_read_repair "$dev1" "$dev2" "$dev3" + lvs -o integritymismatches $vg/${lv1}_rimage_0 + lvs -o integritymismatches $vg/${lv1}_rimage_1 +@@ -235,13 +212,14 @@ lvremove $vg/$lv1 + vgremove -ff $vg + + _prepare_vg +-lvcreate --type raid6 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 +-_wait_recalc $vg/${lv1}_rimage_4 +-_wait_recalc $vg/$lv1 ++lvcreate --type raid6 --raidintegrity y -n $lv1 -I 4K -l 8 $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_3 ++aux wait_recalc $vg/${lv1}_rimage_4 ++aux wait_recalc $vg/$lv1 + _test_fs_with_read_repair "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" + lvs -o integritymismatches $vg/${lv1}_rimage_0 + lvs -o integritymismatches $vg/${lv1}_rimage_1 +@@ -257,18 +235,21 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid10 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2" "$dev3" "$dev4" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_3 ++aux wait_recalc $vg/$lv1 + _test_fs_with_read_repair "$dev1" "$dev3" + lvs -o integritymismatches $vg/${lv1}_rimage_0 + lvs -o integritymismatches $vg/${lv1}_rimage_1 + lvs -o integritymismatches $vg/${lv1}_rimage_2 + lvs -o integritymismatches $vg/${lv1}_rimage_3 +-lvs -o integritymismatches $vg/$lv1 |tee mismatch +-not grep 0 mismatch ++# raid may read from a non-corrupted image, so we can't ++# be sure that mismatches were detected. ++# lvs -o integritymismatches $vg/$lv1 |tee mismatch ++# not grep 0 mismatch + lvchange -an $vg/$lv1 + lvconvert --raidintegrity n $vg/$lv1 + lvremove $vg/$lv1 +@@ -278,14 +259,15 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity n $vg/$lv1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -293,15 +275,16 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid4 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity n $vg/$lv1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -309,15 +292,16 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid5 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity n $vg/$lv1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -325,17 +309,18 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid6 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 +-_wait_recalc $vg/${lv1}_rimage_4 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_3 ++aux wait_recalc $vg/${lv1}_rimage_4 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity n $vg/$lv1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -343,14 +328,15 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid10 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity n $vg/$lv1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -360,14 +346,15 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -375,14 +362,15 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid4 -n $lv1 -l 8 $vg +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -390,14 +378,15 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid5 -n $lv1 -l 8 $vg +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -405,19 +394,15 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid6 -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 +-_wait_recalc $vg/${lv1}_rimage_4 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -425,14 +410,15 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid10 -n $lv1 -l 8 $vg +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert --raidintegrity y $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -442,23 +428,23 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 +-lvs -a -o+devices $vg ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + lvextend -l 16 $vg/$lv1 + lvchange -ay $vg/$lv1 +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-xfs_growfs $mnt +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-lvs -a -o+devices $vg ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++resize2fs "$DM_DEV_DIR/$vg/$lv1" ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++lvs -a -o name,segtype,devices,sync_percent $vg + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -466,26 +452,26 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid6 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 +-_wait_recalc $vg/${lv1}_rimage_4 +-_wait_recalc $vg/$lv1 +-lvs -a -o+devices $vg ++lvs -a -o name,segtype,sync_percent,devices $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_3 ++aux wait_recalc $vg/${lv1}_rimage_4 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + lvextend -l 16 $vg/$lv1 + lvchange -ay $vg/$lv1 +-mount "$DM_DEV_DIR/$vg/$lv1" $mnt +-xfs_growfs $mnt +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-lvs -a -o+devices $vg ++mount "$DM_DEV_DIR/$vg/$lv1" "$mnt" ++resize2fs "$DM_DEV_DIR/$vg/$lv1" ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++lvs -a -o name,segtype,devices,sync_percent $vg + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -495,19 +481,20 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + lvs -a -o+devices $vg + _add_new_data_to_mnt + lvextend -l 16 $vg/$lv1 +-xfs_growfs $mnt +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++resize2fs "$DM_DEV_DIR/$vg/$lv1" ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -515,20 +502,21 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid5 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 + lvs -a -o+devices $vg + _add_new_data_to_mnt + lvextend -l 16 $vg/$lv1 +-xfs_growfs $mnt +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++resize2fs "$DM_DEV_DIR/$vg/$lv1" ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -536,19 +524,20 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid10 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + lvs -a -o+devices $vg + _add_new_data_to_mnt + lvextend -l 16 $vg/$lv1 +-xfs_growfs $mnt +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++resize2fs "$DM_DEV_DIR/$vg/$lv1" ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + lvs -a -o+devices $vg + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -558,19 +547,20 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + lvs -a -o+devices $vg + _add_new_data_to_mnt + lvconvert -y -m+1 $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 + lvs -a -o+devices $vg + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -580,17 +570,17 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m2 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/$lv1 +-lvs -a -o+devices $vg ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + lvconvert -y -m-1 $vg/$lv1 + lvs -a -o+devices $vg + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -600,21 +590,20 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 +-lvs -a -o+devices $vg ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 + _add_new_data_to_mnt + not lvconvert -y -m-1 $vg/$lv1 + not lvconvert --splitmirrors 1 -n tmp -y $vg/$lv1 + not lvconvert --splitmirrors 1 --trackchanges -y $vg/$lv1 + not lvchange --syncaction repair $vg/$lv1 + not lvreduce -L4M $vg/$lv1 +-not lvcreate -s -n snap -L4M $vg/$lv1 + not pvmove -n $vg/$lv1 "$dev1" + not pvmove "$dev1" + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -624,9 +613,11 @@ vgremove -ff $vg + + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y --raidintegritymode bitmap -n $lv1 -l 8 $vg "$dev1" "$dev2" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/$lv1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/$lv1 ++lvchange $vg/$lv1 --writemostly "$dev2" + _test_fs_with_read_repair "$dev1" + lvs -o integritymismatches $vg/${lv1}_rimage_0 |tee mismatch + not grep 0 mismatch +@@ -638,13 +629,14 @@ lvremove $vg/$lv1 + vgremove -ff $vg + + _prepare_vg +-lvcreate --type raid6 --raidintegrity y --raidintegritymode bitmap -n $lv1 -l 8 $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-_wait_recalc $vg/${lv1}_rimage_3 +-_wait_recalc $vg/${lv1}_rimage_4 +-_wait_recalc $vg/$lv1 ++lvcreate --type raid6 --raidintegrity y --raidintegritymode bitmap -n $lv1 -I 4K -l 8 $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 ++aux wait_recalc $vg/${lv1}_rimage_3 ++aux wait_recalc $vg/${lv1}_rimage_4 ++aux wait_recalc $vg/$lv1 + _test_fs_with_read_repair "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" + lvs -o integritymismatches $vg/${lv1}_rimage_0 + lvs -o integritymismatches $vg/${lv1}_rimage_1 +@@ -661,13 +653,14 @@ vgremove -ff $vg + # remove from active lv + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y --raidintegritymode bitmap -n $lv1 -l 8 $vg "$dev1" "$dev2" +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_new_data_to_mnt + lvconvert --raidintegrity n $vg/$lv1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -678,11 +671,11 @@ _prepare_vg + lvcreate --type raid1 -m1 -n $lv1 -l 8 $vg + _add_new_data_to_mnt + lvconvert --raidintegrity y --raidintegritymode bitmap $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -691,17 +684,17 @@ vgremove -ff $vg + # lvextend active + _prepare_vg + lvcreate --type raid1 --raidintegrity y --raidintegritymode bitmap -m1 -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-lvs -a -o+devices $vg ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_new_data_to_mnt + lvextend -l 16 $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-xfs_growfs $mnt ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++resize2fs "$DM_DEV_DIR/$vg/$lv1" + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +@@ -710,18 +703,17 @@ vgremove -ff $vg + # add image to raid1 + _prepare_vg + lvcreate --type raid1 -m1 --raidintegrity y --raidintegritymode bitmap -n $lv1 -l 8 $vg +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-lvs -a -o+devices $vg ++lvs -a -o name,segtype,devices,sync_percent $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 + _add_new_data_to_mnt + lvconvert -y -m+1 $vg/$lv1 +-_wait_recalc $vg/${lv1}_rimage_0 +-_wait_recalc $vg/${lv1}_rimage_1 +-_wait_recalc $vg/${lv1}_rimage_2 +-lvs -a -o+devices $vg ++aux wait_recalc $vg/${lv1}_rimage_0 ++aux wait_recalc $vg/${lv1}_rimage_1 ++aux wait_recalc $vg/${lv1}_rimage_2 + _add_more_data_to_mnt + _verify_data_on_mnt +-umount $mnt ++umount "$mnt" + lvchange -an $vg/$lv1 + _verify_data_on_lv + lvremove $vg/$lv1 +-- +2.52.0 + diff --git a/lvm2.spec b/lvm2.spec index 61a35e2..1288d66 100644 --- a/lvm2.spec +++ b/lvm2.spec @@ -55,7 +55,7 @@ %global commit 4dc5d4ac7e7a9457ccc46ff04796b347e58bf4da %global shortcommit %(c=%{commit}; echo ${c:0:7}) %endif -%global rel_suffix .2 +%global rel_suffix .3 # Do not reset Release to 1 unless both lvm2 and device-mapper # versions are increased together. @@ -241,6 +241,9 @@ Patch140: 0139-tests-check-exit_on-works.patch Patch141: 0140-mirror-enhance-error-path-for-pvmove-finish.patch # RHEL-66486: Patch142: 0141-lvmlockd-vgchange-systemid-doen-t-need-global-lock.patch +# RHEL-135074: +Patch143: 0142-integrity-allow-creating-imeta-with-more-than-one-se.patch +Patch144: 0143-test-Fix-integrity-tests.patch BuildRequires: gcc %if %{enable_testsuite} @@ -919,6 +922,9 @@ An extensive functional testsuite for LVM2. %endif %changelog +* Tue Jan 06 2026 Marian Csontos - 2.03.14-15.el8_10.3 +- Allow integrity to use multiple segments for metadata. + * Mon Jun 02 2025 Marian Csontos - 2.03.14-15.el8_10.2 - Fix vgchange exit code when lvmlockd is not running and no change is done.