mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
lvmetad: pvscan: do not scan and read ignored MDAs from PVs
Metadata areas which are marked as ignored should not be scanned and read during pvscan --cache. Otherwise, this can cause lvmetad to cache out-of-date metadata in case other PVs with fresh metadata are missing by chance. Make this to work like in non-lvmetad case where the behaviour would be the same as if the PV was orphan (in case we have no other PVs with valid non-ignored metadata areas).
This commit is contained in:
parent
ff5217f850
commit
038013cf42
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.118 -
|
Version 2.02.118 -
|
||||||
=================================
|
=================================
|
||||||
|
Fix pvscan --cache to not scan and read ignored metadata areas on PVs.
|
||||||
Add After=iscsi-shutdown.service to blk-availability.service systemd unit.
|
Add After=iscsi-shutdown.service to blk-availability.service systemd unit.
|
||||||
Disallow vgconvert from changing metadata format when lvmetad is used.
|
Disallow vgconvert from changing metadata format when lvmetad is used.
|
||||||
Don't do a full read of VG when creating a new VG with an existing name.
|
Don't do a full read of VG when creating a new VG with an existing name.
|
||||||
|
4
lib/cache/lvmetad.c
vendored
4
lib/cache/lvmetad.c
vendored
@ -895,7 +895,9 @@ struct _lvmetad_pvscan_baton {
|
|||||||
static int _lvmetad_pvscan_single(struct metadata_area *mda, void *baton)
|
static int _lvmetad_pvscan_single(struct metadata_area *mda, void *baton)
|
||||||
{
|
{
|
||||||
struct _lvmetad_pvscan_baton *b = baton;
|
struct _lvmetad_pvscan_baton *b = baton;
|
||||||
struct volume_group *this = mda->ops->vg_read(b->fid, "", mda, 1);
|
struct volume_group *this;
|
||||||
|
|
||||||
|
this = mda_is_ignored(mda) ? NULL : mda->ops->vg_read(b->fid, "", mda, 1);
|
||||||
|
|
||||||
/* FIXME Also ensure contents match etc. */
|
/* FIXME Also ensure contents match etc. */
|
||||||
if (!b->vg || this->seqno > b->vg->seqno)
|
if (!b->vg || this->seqno > b->vg->seqno)
|
||||||
|
@ -22,4 +22,17 @@ pvscan --cache
|
|||||||
|
|
||||||
vgs | grep $vg1
|
vgs | grep $vg1
|
||||||
|
|
||||||
|
# When MDA is ignored on PV, do not read any VG
|
||||||
|
# metadata from such PV as it may contain old
|
||||||
|
# metadata which hasn't been updated for some
|
||||||
|
# time and also since the MDA is marked as ignored,
|
||||||
|
# it should really be *ignored*!
|
||||||
|
pvchange --metadataignore y "$dev1"
|
||||||
|
aux disable_dev "$dev2"
|
||||||
|
pvscan --cache
|
||||||
|
check pv_field "$dev1" vg_name ""
|
||||||
|
aux enable_dev "$dev2"
|
||||||
|
pvscan --cache
|
||||||
|
check pv_field "$dev1" vg_name "$vg1"
|
||||||
|
|
||||||
vgremove -ff $vg1
|
vgremove -ff $vg1
|
||||||
|
Loading…
Reference in New Issue
Block a user