1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-04-01 18:50:41 +03:00

tests: adjust for check_devicesfile

This commit is contained in:
David Teigland 2021-08-18 16:23:48 -05:00
parent b0bda7c25b
commit 4df6931c4c
21 changed files with 209 additions and 49 deletions

View File

@ -1023,8 +1023,9 @@ prepare_devs() {
if test -n "$LVM_TEST_DEVICES_FILE"; then
mkdir -p "$TESTDIR/etc/lvm/devices" || true
rm "$TESTDIR/etc/lvm/devices/system.devices" || true
touch "$TESTDIR/etc/lvm/devices/system.devices"
for d in "${DEVICES[@]}"; do
lvmdevices --adddev "$dev" || true
lvmdevices --adddev "$d" || true
done
fi
@ -1342,9 +1343,19 @@ prepare_vg() {
vgcreate $SHARED -s 512K "$vg" "${DEVICES[@]}"
}
extend_devices() {
test -z "$LVM_TEST_DEVICES_FILE" && return
for dev in "$@"; do
lvmdevices --adddev $dev
done
}
extend_filter() {
local filter
test -n "$LVM_TEST_DEVICES_FILE" && return
filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
for rx in "$@"; do
filter=$(echo "$filter" | sed -e "s:\\[:[ \"$rx\", :")
@ -1355,6 +1366,8 @@ extend_filter() {
extend_filter_md() {
local filter
test -n "$LVM_TEST_DEVICES_FILE" && return
filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
for rx in "$@"; do
filter=$(echo "$filter" | sed -e "s:\\[:[ \"$rx\", :")
@ -1370,21 +1383,33 @@ extend_filter_LVMTEST() {
hide_dev() {
local filter
filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
for dev in "$@"; do
filter=$(echo "$filter" | sed -e "s:\\[:[ \"r|$dev|\", :")
done
lvmconf "$filter"
if test -n "$LVM_TEST_DEVICES_FILE"; then
for dev in "$@"; do
lvmdevices --deldev $dev
done
else
filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
for dev in "$@"; do
filter=$(echo "$filter" | sed -e "s:\\[:[ \"r|$dev|\", :")
done
lvmconf "$filter"
fi
}
unhide_dev() {
local filter
filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
for dev in "$@"; do
filter=$(echo "$filter" | sed -e "s:\"r|$dev|\", ::")
done
lvmconf "$filter"
if test -n "$LVM_TEST_DEVICES_FILE"; then
for dev in "$@"; do
lvmdevices -y --adddev $dev
done
else
filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
for dev in "$@"; do
filter=$(echo "$filter" | sed -e "s:\"r|$dev|\", ::")
done
lvmconf "$filter"
fi
}
mkdev_md5sum() {
@ -1433,13 +1458,13 @@ backup/backup = 0
devices/cache_dir = "$TESTDIR/etc"
devices/default_data_alignment = 1
devices/dir = "$DM_DEV_DIR"
devices/filter = "a|.*|"
devices/global_filter = [ "a|$DM_DEV_DIR/mapper/${PREFIX}.*pv[0-9_]*$|", "r|.*|" ]
devices/md_component_detection = 0
devices/scan = "$DM_DEV_DIR"
devices/sysfs_scan = 1
devices/write_cache_state = 0
devices/use_devicesfile = $LVM_TEST_DEVICES_FILE
devices/filter = "a|.*|"
devices/global_filter = [ "a|$DM_DEV_DIR/mapper/${PREFIX}.*pv[0-9_]*$|", "r|.*|" ]
global/abort_on_internal_errors = 1
global/cache_check_executable = "$LVM_TEST_CACHE_CHECK_CMD"
global/cache_dump_executable = "$LVM_TEST_CACHE_DUMP_CMD"

View File

@ -63,6 +63,8 @@ test -n "$SKIP_WITH_LVMPOLLD" && test -n "$LVM_TEST_LVMPOLLD" && test -z "$LVM_T
test -n "$SKIP_WITH_LVMLOCKD" && test -n "$LVM_TEST_LVMLOCKD" && initskip
test -n "$SKIP_WITH_DEVICES_FILE" && test -n "$LVM_TEST_DEVICES_FILE" && initskip
unset CDPATH
export LVM_TEST_BACKING_DEVICE LVM_TEST_DEVDIR LVM_TEST_NODEBUG LVM_TEST_FAILURE

View File

@ -45,6 +45,7 @@ for i in "$LOOP1" "$LOOP2"; do
done
aux extend_filter "a|$dev1|" "a|$dev2|"
aux extend_devices "$dev1" "$dev2"
not vgcreate --config 'devices/allow_mixed_block_sizes=0' $vg "$dev1" "$dev2"
vgcreate --config 'devices/allow_mixed_block_sizes=1' $vg "$dev1" "$dev2"

View File

@ -287,35 +287,6 @@ pvscan --devices "$dev4" --cache -aay "$dev4"
check lv_field $vg2/$lv2 lv_active "active"
vgchange -an $vg2
# verify --devicesfile and --devices are not affected by a filter
# hide_dev excludes using existing filter
aux hide_dev "$dev2"
aux hide_dev "$dev4"
pvs --devicesfile test.devices "$dev1"
pvs --devicesfile test.devices "$dev2"
not pvs --devicesfile test.devices "$dev3"
not pvs --devicesfile test.devices "$dev4"
pvs --devices "$dev1" "$dev1"
pvs --devices "$dev2" "$dev2"
pvs --devices "$dev3" "$dev3"
pvs --devices "$dev4" "$dev4"
pvs --devices "$dev5" "$dev5"
pvs --devices "$dev1","$dev2","$dev3","$dev4","$dev5" "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" | tee out
grep "$dev1" out
grep "$dev2" out
grep "$dev3" out
grep "$dev4" out
grep "$dev5" out
vgchange --devices "$dev1","$dev2" -ay $vg1
check lv_field $vg1/$lv1 lv_active "active"
lvchange --devices "$dev1","$dev2" -an $vg1/$lv1
vgchange --devices "$dev3","$dev4" -ay $vg2
check lv_field $vg2/$lv2 lv_active "active"
lvchange --devices "$dev3","$dev4" -an $vg2/$lv2
aux unhide_dev "$dev2"
aux unhide_dev "$dev4"
vgchange --devicesfile "" -an
vgremove --devicesfile "" -y $vg1
vgremove --devicesfile "" -y $vg2
@ -636,3 +607,61 @@ grep "$dev2" "$DFDIR/test.devices"
rm "$DFDIR/test.devices"
vgcreate --devicesfile test.devices $vg3 "$dev3"
grep "$dev3" "$DFDIR/test.devices"
#
# verify --devicesfile and --devices are not affected by a filter
# This is last because it sets lvm.conf filter and
# I haven't found a way of removing the filter from
# the config after setting it.
#
aux lvmconf 'devices/use_devicesfile = 0'
wipe_all
rm -f "$DF"
rm -f "$DFDIR/test.devices"
vgcreate --devicesfile test.devices $vg1 "$dev1" "$dev2"
grep "$dev1" "$DFDIR/test.devices"
grep "$dev2" "$DFDIR/test.devices"
not ls "$DFDIR/system.devices"
# create two VGs outside the special devices file
vgcreate $vg2 "$dev3" "$dev4"
vgcreate $vg3 "$dev5" "$dev6"
not grep "$dev3" "$DFDIR/test.devices"
not grep "$dev5" "$DFDIR/test.devices"
not ls "$DFDIR/system.devices"
lvcreate -l4 -an -i2 -n $lv1 $vg1
lvcreate -l4 -an -i2 -n $lv2 $vg2
lvcreate -l4 -an -i2 -n $lv3 $vg3
aux lvmconf "devices/filter = [ \"r|$dev2|\" \"r|$dev4|\" ]"
pvs --devicesfile test.devices "$dev1"
pvs --devicesfile test.devices "$dev2"
not pvs --devicesfile test.devices "$dev3"
not pvs --devicesfile test.devices "$dev4"
pvs --devices "$dev1" "$dev1"
pvs --devices "$dev2" "$dev2"
pvs --devices "$dev3" "$dev3"
pvs --devices "$dev4" "$dev4"
pvs --devices "$dev5" "$dev5"
pvs --devices "$dev1","$dev2","$dev3","$dev4","$dev5" "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" | tee out
grep "$dev1" out
grep "$dev2" out
grep "$dev3" out
grep "$dev4" out
grep "$dev5" out
vgchange --devices "$dev1","$dev2" -ay $vg1
check lv_field $vg1/$lv1 lv_active "active"
lvchange --devices "$dev1","$dev2" -an $vg1/$lv1
vgchange --devices "$dev3","$dev4" -ay $vg2
check lv_field $vg2/$lv2 lv_active "active"
lvchange --devices "$dev3","$dev4" -an $vg2/$lv2
vgchange -an --devicesfile test.devices $vg1
vgremove -y --devicesfile test.devices $vg1
vgremove -y $vg2
vgremove -y $vg3

View File

@ -60,6 +60,7 @@ for pass in "auto" "start" ; do
#
aux mdadm_create --metadata=1.0 --level="$MD_LEVEL" --chunk=64 --raid-devices=2 "$dev1" "$dev2"
mddev=$(< MD_DEV)
lvmdevices --adddev $mddev || true
pvcreate "$mddev"
PVIDMD=$(get pv_field "$mddev" uuid | tr -d - )
@ -118,6 +119,7 @@ check inactive $vg $lv1
vgchange -an $vg
vgremove -f $vg
lvmdevices --deldev $mddev || true
aux cleanup_md_dev
@ -129,6 +131,7 @@ aux cleanup_md_dev
aux mdadm_create --metadata=1.0 --level="$MD_LEVEL" --chunk=64 --raid-devices=2 "$dev1" "$dev2"
mddev=$(< MD_DEV)
lvmdevices --adddev $mddev || true
pvcreate "$mddev"
PVIDMD=$(get pv_field "$mddev" uuid | tr -d - )
@ -188,6 +191,7 @@ aux udev_wait
aux mdadm_create --metadata=1.0 --level="$MD_LEVEL" --chunk=64 --raid-devices=2 "$dev1" "$dev2"
mddev=$(< MD_DEV)
lvmdevices --adddev $mddev || true
pvcreate "$mddev"
PVIDMD=$(get pv_field "$mddev" uuid | tr -d - )
@ -235,6 +239,7 @@ test ! -f "$RUNDIR/lvm/pvs_online/$PVIDMD"
test ! -f "$RUNDIR/lvm/vgs_online/$vg"
aux enable_dev "$dev2"
lvmdevices --deldev $mddev || true
aux cleanup_md_dev
aux wipefs_a "$dev1"
@ -250,6 +255,7 @@ if [ "$MD_LEVEL" = "1" ] ; then
#
aux mdadm_create --metadata=1.0 --level="$MD_LEVEL" --chunk=64 --raid-devices=3 "$dev1" "$dev2" "$dev4"
mddev=$(< MD_DEV)
lvmdevices --adddev $mddev || true
pvcreate "$mddev"
PVIDMD=$(get pv_field "$mddev" uuid | tr -d - )

View File

@ -141,6 +141,12 @@ not cat $NEWHINTS
# Test that adding a new device and removing a device
# causes hints to be recreated.
#
# with a devices file the appearance of a new device on
# the system does not disturb lvm, so this test doesn't
# apply
#
if ! lvmdevices; then
not pvs "$dev5"
@ -183,6 +189,9 @@ grep devs_hash $PREV > devs_hash1
grep devs_hash $HINTS > devs_hash2
not diff devs_hash1 devs_hash2
# end of new device test for non-devicesfile case
fi
#
# Test that hints don't change from a bunch of commands
# that use hints and shouldn't change it.

View File

@ -72,6 +72,10 @@ 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 lvmconf 'devices/scan = "/dev"'

View File

@ -34,6 +34,7 @@ ls -la "${LOOP}"*
test -e "${LOOP}p1"
aux extend_filter "a|$LOOP|"
aux extend_devices "$LOOP"
# creation should fail for 'partitioned' loop device
not pvcreate -y "$LOOP"
@ -57,6 +58,7 @@ ls -la "${LOOP}"*
test ! -e "${LOOP}p1"
aux extend_filter "a|$LOOP|"
aux extend_devices "$LOOP"
# creation should pass for 'non-partitioned' loop device
pvcreate -y "$LOOP"

View File

@ -11,6 +11,16 @@ test_description='Test duplicate PVs'
SKIP_WITH_LVMPOLLD=1
SKIP_WITH_CLVMD=1
# This test should work with real device ids (not devnames).
# When PVs are being overwritten by the test, the devices file is
# excluding them since with idtype=devname the devices file falls
# back to including devs based on PVIDs in the devices file,
# but the 'dd' is clobbering the PVIDs so those devs aren't included
# so the 'pvs' commands below don't report them.
# In general this is better behavior, but needs to be tested
# with proper device ids.
SKIP_WITH_DEVICES_FILE=1
. lib/inittest
aux prepare_devs 6 16

View File

@ -20,8 +20,8 @@ aux prepare_devs 3
pvcreate "$dev1"
UUID1=$(get pv_field "$dev1" uuid)
pvcreate --config "devices{filter=[\"a|$dev2|\",\"r|.*|\"]}" -u "$UUID1" --norestorefile "$dev2"
pvcreate --config "devices{filter=[\"a|$dev3|\",\"r|.*|\"]}" -u "$UUID1" --norestorefile "$dev3"
pvcreate --devices "$dev2" -u "$UUID1" --norestorefile "$dev2"
pvcreate --devices "$dev3" -u "$UUID1" --norestorefile "$dev3"
pvscan --cache 2>&1 | tee out
@ -35,7 +35,7 @@ test "$(grep -c $UUID1 main)" -eq 1
COUNT=$(grep --count "Not using device" warn)
[ "$COUNT" -eq 2 ]
pvs -o+uuid --config "devices{filter=[\"a|$dev2|\",\"r|.*|\"]}" 2>&1 | tee out
pvs -o+uuid --devices $dev2 2>&1 | tee out
rm warn main || true
grep WARNING out > warn || true

View File

@ -64,6 +64,7 @@ dd if=dev1_backup of="$dev1" bs=1M
# prepare a VG with $dev1 and $dev both having 1 MDA
aux enable_dev "$dev2"
vgremove -ff $vg1
pvremove -ff -y "$dev1"
pvcreate --metadatacopies 1 "$dev1"
vgcreate $vg1 "$dev1" "$dev2"
@ -122,6 +123,7 @@ dd if=dev1_backup of="$dev1" bs=1M
# prepare a VG with $dev1 and $dev both having 1 MDA
aux enable_dev "$dev2"
vgremove -ff $vg1
pvremove -ff -y "$dev1"
pvcreate --metadatacopies 1 "$dev1"
vgcreate $vg1 "$dev1" "$dev2"

View File

@ -22,6 +22,10 @@ lvcreate --type snapshot -s -L10 -n $lv2 $vg --virtualsize 4T
lvcreate --type snapshot -s -L10 -n $lv3 $vg --virtualsize 4194300M
aux extend_filter_LVMTEST
aux lvmconf "devices/scan_lvs = 1"
aux extend_devices "$DM_DEV_DIR/$vg/$lv1"
aux extend_devices "$DM_DEV_DIR/$vg/$lv2"
aux extend_devices "$DM_DEV_DIR/$vg/$lv3"
vgcreate $vg1 "$DM_DEV_DIR/$vg/$lv2"

View File

@ -26,6 +26,9 @@ aux extend_filter_LVMTEST
lvcreate -L10 -V10 -n $lv1 -T $vg/pool1
aux extend_devices "$DM_DEV_DIR/$vg/$lv1"
aux lvmconf "devices/scan_lvs = 1"
pvcreate "$DM_DEV_DIR/$vg/$lv1"
pvremove "$DM_DEV_DIR/$vg/$lv1"

View File

@ -15,8 +15,8 @@ SKIP_WITH_LVMPOLLD=1
. lib/inittest
# Sets 'scan_lvs = 1'
aux extend_filter_LVMTEST
aux lvmconf "devices/scan_lvs = 1"
aux prepare_pvs 1
@ -24,6 +24,7 @@ vgcreate $SHARED $vg1 "$dev1"
lvcreate -l1 -n $lv1 $vg1
aux extend_devices "$DM_DEV_DIR/$vg1/$lv1"
pvcreate "$DM_DEV_DIR/$vg1/$lv1"
pvs "$DM_DEV_DIR/$vg1/$lv1"

View File

@ -23,10 +23,11 @@ aux prepare_vg 5
# Create stacked device
lvcreate --type snapshot -s -L10 -n $lv1 $vg --virtualsize 100M
aux lvmconf "devices/scan_lvs = 1"
aux extend_filter_LVMTEST
aux extend_devices "$DM_DEV_DIR"/$vg/$lv1
vgcreate $vg1 "$DM_DEV_DIR"/$vg/$lv1
lvcreate -L20 -n $lv1 $vg1
lvcreate -L10 -n snap -s $vg1/$lv1

View File

@ -26,7 +26,10 @@ get_devs
# Prepare large enough backend device
vgcreate -s 4M "$vg" "${DEVICES[@]}"
lvcreate --type snapshot -s -l 100%FREE -n $lv $vg --virtualsize 15P
aux lvmconf "devices/scan_lvs = 1"
aux extend_filter_LVMTEST
aux extend_devices "$DM_DEV_DIR/$vg/$lv"
# Check usability with largest extent size
pvcreate "$DM_DEV_DIR/$vg/$lv"

View File

@ -77,6 +77,8 @@ lvremove -f $vg
lvcreate --type snapshot -s -l 100%FREE -n $lv $vg --virtualsize $TSIZE
aux extend_filter_LVMTEST
aux extend_devices "$DM_DEV_DIR/$vg/$lv"
aux lvmconf "devices/scan_lvs = 1"
aux lvmconf "activation/snapshot_autoextend_percent = 20" \
"activation/snapshot_autoextend_threshold = 50"

View File

@ -27,6 +27,19 @@ aux prepare_devs 1
SIDFILE="etc/lvm_test.conf"
LVMLOCAL="etc/lvmlocal.conf"
DFDIR="$LVM_SYSTEM_DIR/devices"
DF="$DFDIR/system.devices"
# Avoid system id validation in the devices file
# which gets in the way of the test switching the
# local system id.
clear_df_systemid() {
if [[ -f $DF ]]; then
sed -e "s|SYSTEMID=.||" "$DF" > tmpdf
cp tmpdf $DF
fi
}
# create vg with system_id using each source
## none
@ -38,7 +51,8 @@ check vg_field $vg1 systemid "$SID"
vgremove $vg1
# FIXME - print 'life' config data
eval "$(lvmconfig global/etc 2>/dev/null || lvmconfig --type default global/etc)"
#eval "$(lvmconfig global/etc 2>/dev/null || lvmconfig --type default global/etc)"
etc="/etc"
## machineid
if [ -e "$etc/machine-id" ]; then
@ -77,6 +91,7 @@ rm -f "$LVMLOCAL"
SID=sidfoofile
echo "$SID" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
vgcreate $vg1 "$dev1"
@ -89,6 +104,7 @@ vgremove $vg1
SID1=sidfoofile1
SID2=sidfoofile2
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg, overriding the local system_id so the vg looks foreign
@ -108,6 +124,7 @@ vgs --foreign $vg1 >err
grep $vg1 err
# change the local system_id to the second value, making the vg not foreign
echo "$SID2" > "$SIDFILE"
clear_df_systemid
# we can now see and remove the vg
vgs $vg1 >err
grep $vg1 err
@ -118,6 +135,7 @@ vgremove $vg1
SID1=sidfoofile1
SID2=sidfoofile2
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -127,6 +145,7 @@ vgs >err
grep $vg1 err
# change the local system_id, making the vg foreign
echo "$SID2" > "$SIDFILE"
clear_df_systemid
# normal vgs doesn't see the vg
vgs >err
not grep $vg1 err
@ -135,6 +154,7 @@ vgs --foreign >err
grep $vg1 err
# change the local system_id back to the first value, making the vg not foreign
echo "$SID1" > "$SIDFILE"
clear_df_systemid
vgs >err
grep $vg1 err
vgremove $vg1
@ -144,6 +164,7 @@ vgremove $vg1
SID1=sidfoofile1
SID2=sidfoofile2
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -161,6 +182,7 @@ vgs --foreign >err
grep $vg1 err
# change the local system_id to the second system_id so we can remove the vg
echo "$SID2" > "$SIDFILE"
clear_df_systemid
vgs >err
grep $vg1 err
vgremove $vg1
@ -172,6 +194,7 @@ vgremove $vg1
SID1=sidfoofile1
SID2=sidfoofile2
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -183,6 +206,7 @@ grep $vg1 err
check lv_exists $vg1 $lv1
# change our system_id, making the vg foreign, but accessible
echo "$SID2" > "$SIDFILE"
clear_df_systemid
vgs >err
grep $vg1 err
check lv_exists $vg1 $lv1
@ -193,6 +217,7 @@ not lvremove $vg1/$lv1
not vgremove $vg1
# change our system_id back to match the vg so it's not foreign
echo "$SID1" > "$SIDFILE"
clear_df_systemid
vgs >err
grep $vg1 err
lvremove $vg1/$lv1
@ -202,6 +227,7 @@ vgremove $vg1
SID1=sidfoofile1
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -220,12 +246,14 @@ vgremove $vg1
SID1=sidfoofile1
rm -f "$SIDFILE"
clear_df_systemid
# create a vg with no system_id
aux lvmconf "global/system_id_source = none"
vgcreate $vg1 "$dev1"
check vg_field $vg1 systemid ""
# set a local system_id
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# check we can see and use the vg with no system_id
@ -239,6 +267,7 @@ vgremove $vg1
SID1=sidfoofile1
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -269,6 +298,7 @@ SID2=012345678901234567890123456789012345678901234567890123456789012345678901234
# max len system_id should appear normally
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -281,6 +311,7 @@ vgremove $vg1
# max+1 len system_id should be missing the last character
echo "$SID2" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -300,6 +331,7 @@ SID1=012345678901234567890123456789012345678901234567890123456789012345678901234
# The string is truncated to max length (128) before the invalid character is omitted
SID2=012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789abcdefg
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -316,6 +348,7 @@ SID1="?%$&A.@1]"
# SID1 without the invalid characters
SID2=A.1
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -334,6 +367,7 @@ vgremove $vg1
SID1=sidfoofile1
SID2=sidfoofile2
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -344,6 +378,7 @@ grep $vg1 err
grep "$dev1" err
# change the local system_id, making the vg foreign
echo "$SID2" > "$SIDFILE"
clear_df_systemid
# normal pvs does not see the vg or pv
pvs >err
not grep $vg1 err
@ -354,6 +389,7 @@ grep $vg1 err
grep "$dev1" err
# change the local system_id back so the vg can be removed
echo "$SID1" > "$SIDFILE"
clear_df_systemid
vgremove $vg1
rm -f "$SIDFILE"
@ -363,6 +399,7 @@ rm -f "$SIDFILE"
SID1=sidfoofile1
SID2=sidfoofile2
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -375,6 +412,7 @@ grep $vg1 err
grep $lv1 err
# change the local system_id, making the vg foreign
echo "$SID2" > "$SIDFILE"
clear_df_systemid
# normal lvs does not see the vg or lv
lvs >err
not grep $vg1 err
@ -385,6 +423,7 @@ grep $vg1 err
grep $lv1 err
# change the local system_id back so the vg can be removed
echo "$SID1" > "$SIDFILE"
clear_df_systemid
lvremove $vg1/$lv1
vgremove $vg1
rm -f "$SIDFILE"
@ -395,6 +434,7 @@ SID1=sidfoofile1
SID2=sidfoofile2
rm -f "$LVMLOCAL"
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -404,6 +444,7 @@ vgs >err
grep $vg1 err
# change the local system_id, making the vg foreign
echo "$SID2" > "$SIDFILE"
clear_df_systemid
# normal vgs doesn't see the vg
vgs >err
not grep $vg1 err
@ -420,6 +461,7 @@ rm -f "$LVMLOCAL"
# vgcreate --systemid "" creates a vg without a system_id even if source is set
SID1=sidfoofile1
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -436,6 +478,7 @@ rm -f "$SIDFILE"
# vgchange --systemid "" clears the system_id on owned vg
SID1=sidfoofile1
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -461,6 +504,7 @@ SID1=sidfoofile1
SID2=sidfoofile2
rm -f "$LVMLOCAL"
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -470,6 +514,7 @@ vgs >err
grep $vg1 err
# change the local system_id, making the vg foreign
echo "$SID2" > "$SIDFILE"
clear_df_systemid
# normal vgs doesn't see the vg
vgs >err
not grep $vg1 err
@ -482,6 +527,7 @@ not vgchange --yes --systemid "" $vg1
not vgchange --yes --systemid foo $vg1
# change our system_id back so we can remove the vg
echo "$SID1" > "$SIDFILE"
clear_df_systemid
vgremove $vg1
# vgcfgbackup backs up foreign vg with --foreign
@ -489,6 +535,7 @@ SID1=sidfoofile1
SID2=sidfoofile2
rm -f "$LVMLOCAL"
echo "$SID1" > "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
# create a vg
@ -498,6 +545,7 @@ vgs >err
grep $vg1 err
# change the local system_id, making the vg foreign
echo "$SID2" > "$SIDFILE"
clear_df_systemid
# normal vgs doesn't see the vg
vgs >err
not grep $vg1 err
@ -506,6 +554,7 @@ not vgcfgbackup $vg1
vgcfgbackup --foreign $vg1
# change our system_id back so we can remove the vg
echo "$SID1" > "$SIDFILE"
clear_df_systemid
vgremove $vg1
rm -f "$SIDFILE"
@ -562,6 +611,7 @@ rm -f $LVMLOCAL
# vgcreate with source file, but no system_id_file config
SID=""
rm -f "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file"
vgcreate $vg1 "$dev1" 2>&1 | tee err
vgs -o+systemid $vg1
@ -572,6 +622,7 @@ vgremove $vg1
# vgcreate with source file, but system_id_file does not exist
SID=""
rm -f "$SIDFILE"
clear_df_systemid
aux lvmconf "global/system_id_source = file" \
"global/system_id_file = \"$SIDFILE\""
vgcreate $vg1 "$dev1" 2>&1 | tee err

View File

@ -23,7 +23,7 @@ aux prepare_devs 3 8
vgcreate $SHARED "$vg" "$dev1" "$dev2"
lvcreate -l100%FREE -n $lv $vg
dd if="$dev1" of="$dev3" bs=1M oflag=direct
pvs --config "devices/global_filter = [ \"a|$dev2|\", \"a|$dev3|\", \"r|.*|\" ]" 2>err
pvs --devices $dev2,$dev3 2>err
grep "WARNING: Device mismatch detected for $vg/$lv which is accessing $dev1 instead of $dev3" err
dd if=/dev/zero of="$dev3" bs=1M count=8 oflag=direct

View File

@ -16,11 +16,15 @@ SKIP_WITH_LVMPOLLD=1
. lib/inittest
aux extend_filter_LVMTEST
aux lvmconf "devices/scan_lvs = 1"
aux prepare_pvs 3
vgcreate $SHARED $vg1 "$dev1" "$dev2"
lvcreate -n $lv1 -l 100%FREE $vg1
aux extend_devices "$DM_DEV_DIR/$vg1/$lv1"
#top VG
pvcreate "$DM_DEV_DIR/$vg1/$lv1"
vgcreate $SHARED $vg "$DM_DEV_DIR/$vg1/$lv1" "$dev3"

View File

@ -201,6 +201,7 @@ blockdev --getpbsz "$LOOP1" | grep 512
blockdev --getpbsz "$LOOP2" | grep 512
aux extend_filter "a|$dev3|" "a|$dev4|"
aux extend_devices "$dev3" "$dev4"
# place main LV on dev1 with LBS 512, PBS 4096
# and the cache on dev3 with LBS 512, PBS 512