mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
tests: update missing-pv
add more checks and expand comments explaining behavior
This commit is contained in:
parent
69ea2e3f94
commit
e79c6feb08
@ -28,8 +28,12 @@ lvs -a -o+devices
|
||||
# Fail one leg of each mirror LV.
|
||||
aux disable_dev "$dev1"
|
||||
|
||||
pvs
|
||||
vgs
|
||||
pvs -o+missing |tee out
|
||||
grep missing out |tee out2
|
||||
grep unknown out2
|
||||
vgs -o+partial,missing_pv_count
|
||||
check vg_field $vg vg_partial "partial"
|
||||
check vg_field $vg vg_missing_pv_count 1
|
||||
lvs -a -o+devices
|
||||
|
||||
# Cannot do normal activate of either LV with a failed leg.
|
||||
@ -40,8 +44,12 @@ not lvchange -ay $vg/$lv2
|
||||
lvchange -ay --activationmode partial $vg/$lv1
|
||||
lvchange -ay --activationmode partial $vg/$lv2
|
||||
|
||||
pvs
|
||||
vgs
|
||||
pvs -o+missing |tee out
|
||||
grep missing out |tee out2
|
||||
grep unknown out2
|
||||
vgs -o+partial,missing_pv_count
|
||||
check vg_field $vg vg_partial "partial"
|
||||
check vg_field $vg vg_missing_pv_count 1
|
||||
lvs -a -o+devices
|
||||
|
||||
# Repair lv1 so it no longer uses failed dev.
|
||||
@ -54,8 +62,12 @@ pvck --dump metadata "$dev2" > meta
|
||||
grep MISSING meta
|
||||
rm meta
|
||||
|
||||
pvs
|
||||
vgs
|
||||
pvs -o+missing |tee out
|
||||
grep missing out |tee out2
|
||||
grep unknown out2
|
||||
vgs -o+partial,missing_pv_count
|
||||
check vg_field $vg vg_partial "partial"
|
||||
check vg_field $vg vg_missing_pv_count 1
|
||||
lvs -a -o+devices
|
||||
|
||||
# Verify normal activation is possible of lv1 since it's
|
||||
@ -68,8 +80,12 @@ vgchange -an $vg
|
||||
|
||||
aux enable_dev "$dev1"
|
||||
|
||||
pvs
|
||||
vgs
|
||||
pvs -o+missing |tee out
|
||||
grep missing out |tee out2
|
||||
grep "$dev1" out2
|
||||
vgs -o+partial,missing_pv_count
|
||||
check vg_field $vg vg_partial "partial"
|
||||
check vg_field $vg vg_missing_pv_count 1
|
||||
lvs -a -o+devices
|
||||
|
||||
# TODO: check that lv2 has partial flag, lv1 does not
|
||||
@ -82,7 +98,6 @@ pvck --dump metadata "$dev2" > meta
|
||||
grep MISSING meta
|
||||
rm meta
|
||||
|
||||
|
||||
# The missing pv restrictions still apply even after
|
||||
# the dev has reappeared since it has the MISSING flag.
|
||||
not lvchange -ay $vg/$lv2
|
||||
@ -98,52 +113,75 @@ not lvcreate -l1 $vg
|
||||
# explicitly writes/fixes metadata.
|
||||
vgck --updatemetadata $vg
|
||||
|
||||
pvs
|
||||
vgs
|
||||
pvs -o+missing |tee out
|
||||
grep missing out |tee out2
|
||||
grep "$dev1" out2
|
||||
vgs -o+partial,missing_pv_count
|
||||
check vg_field $vg vg_partial "partial"
|
||||
check vg_field $vg vg_missing_pv_count 1
|
||||
lvs -a -o+devices
|
||||
|
||||
# Check that MISSING flag is still set in ondisk
|
||||
# metadata since the previously missing dev is still
|
||||
# used by lv2.
|
||||
# Check that MISSING flag is still set in ondisk metadata since the
|
||||
# previously missing dev is still used by lv2.
|
||||
pvck --dump metadata "$dev2" > meta
|
||||
grep MISSING meta
|
||||
rm meta
|
||||
|
||||
|
||||
# The missing pv restrictions still apply since it
|
||||
# has the MISSING flag.
|
||||
# The missing pv restrictions still apply since it has the MISSING flag.
|
||||
not lvchange -ay $vg/$lv2
|
||||
not lvcreate -l1 $vg
|
||||
|
||||
lvchange -ay --activationmode partial $vg/$lv2
|
||||
|
||||
# After repair, no more LVs will be using the previously
|
||||
# missing PV.
|
||||
# Replace the missing leg of LV2 so no LV will be using the dev that was
|
||||
# missing. The MISSING_PV flag will not have been cleared from the
|
||||
# metadata yet; that will take another metadata update.
|
||||
lvconvert --repair --yes $vg/$lv2
|
||||
|
||||
pvs
|
||||
vgs
|
||||
lvs -a -o+devices
|
||||
lvs -a -o+devices | tee out
|
||||
not grep "$dev1" out
|
||||
|
||||
vgchange -an $vg
|
||||
# The MISSING_PV flag hasn't been cleared from the metadata yet, but now
|
||||
# that the PV is not used by any more LVs, that flag will be cleared from
|
||||
# the metadata in the next update.
|
||||
pvck --dump metadata "$dev2" > meta
|
||||
grep MISSING meta
|
||||
rm meta
|
||||
|
||||
# The next write of the metadata will clear the MISSING
|
||||
# flag in ondisk metadata because the previously missing
|
||||
# PV is no longer used by any LVs.
|
||||
# Reporting commands run vg_read which sees MISSING_PV in the metadata,
|
||||
# but vg_read then sees the dev is no longer used by any LV, so vg_read
|
||||
# clears the MISSING_PV flag in the vg struct (not in the metadata) before
|
||||
# returning the vg struct to the caller. It's cleared in the vg struct so
|
||||
# that the limitations of having a missing PV are not applied to the
|
||||
# command. The caller sees/uses/reports the VG as having no missing PV,
|
||||
# even though the metadata still contains MISSING_PV. The MISSING_PV flag
|
||||
# is no longer needed in the metadata, but there has simply not been a
|
||||
# metadata update yet to clear it.
|
||||
# The message that's printed in this case is:
|
||||
# WARNING: VG %s has unused reappeared PV %s %s
|
||||
pvs -o+missing |tee out
|
||||
not grep missing out
|
||||
vgs -o+partial,missing_pv_count
|
||||
check vg_field $vg vg_partial ""
|
||||
check vg_field $vg vg_missing_pv_count 0
|
||||
|
||||
# Run a command to write ondisk metadata, which should clear
|
||||
# the MISSING flag, could also use vgck --updatemetadata vg.
|
||||
# Run any command that updates the metadata, and the MISSING_PV flag will
|
||||
# be cleared. Here just use lvcreate -l1, or we could use
|
||||
# vgck --updatemetadata.
|
||||
lvcreate -l1 $vg
|
||||
|
||||
# Check that the MISSING flag is no longer set
|
||||
# in the ondisk metadata.
|
||||
# Now the MISSING flag is removed from the ondisk metadata.
|
||||
pvck --dump metadata "$dev2" > meta
|
||||
not grep MISSING meta
|
||||
rm meta
|
||||
|
||||
# and commands continue to report no missing PV
|
||||
pvs -o+missing |tee out
|
||||
not grep missing out
|
||||
vgs -o+partial,missing_pv_count
|
||||
check vg_field $vg vg_partial ""
|
||||
check vg_field $vg vg_missing_pv_count 0
|
||||
|
||||
pvs
|
||||
vgs
|
||||
lvs -a -o+devices
|
||||
vgchange -an $vg
|
||||
|
||||
vgremove -ff $vg
|
||||
|
Loading…
Reference in New Issue
Block a user