Q: Why should lvmetad cache foreign VGs?
A: It's the most useful behavior in the "steady state".

How to arrive at that conclusion.
Four code configurations to consider, each in two different circumstances.

configurations:

1. lvm not using lvmetad
2. lvm using lvmetad and lvmlockd
3. lvm using lvmetad, and lvmetad does not cache foreign VGs
   (Not currently implemented.)
4. lvm using lvmetad, and lvmetad caches foreign VGs

circumstances:

A. steady state: PVs are not added or removed to/from foreign VGs
B. transient state: PVs are added or removed to/from foreign VGs

combinations:

1.A. A PV is correctly shown in the foreign VG.
1.B. A PV is correctly shown in the foreign VG.

The most accurate representation, at the cost of always scanning disks.


2.A. A PV is correctly shown in the foreign VG.
2.B. A PV is correctly shown in the foreign VG.

The most accurate representation, at the cost of using lvmlockd.


3.A. A PV in a foreign VG is shown as unused.
3.B. A PV in a foreign VG is shown as unused.

If lvmetad ignores foreign VGs and does not cache them, the PVs in the
foreign VGs appear to be unused.  This largely defeats the purpose of
system_id, which is meant to treat VGs/PVs as foreign instead of free
(albeit imperfectly, see below.)


4.A. A PV is correctly shown in the foreign VG.
4.B. A PV is not correctly shown in the foreign VG.

This avoids the cost of always scanning disks, and avoids the cost of
using lvmlockd.  The steady state 4.A. is an improvement over the steady
state 3.A.  When the steady state is the common case, this is a big
advantage.  When the steady state is *not* the common case, the foreign VG
concept is not as useful (if shared devices are this dynamic, lvmlockd
should be considered.)

The limitations related to the transient state 4.B. are explained in
lvmsystemid(7), along with how to handle it.  The specific inaccuracies
possible in 4.B. are:

. PV is shown as belonging to a foreign VG, but is actually unused.
. PV is shown as unused, but actually belongs to a foreign VG.

To resolve the inaccuracies in the transient state (4.B.), and return the
system to an accurate steady state (4.A.), the disks need to be scanned,
which updates lvmetad.  The scanning/updating is a manual step, i.e.
running 'pvscan --cache', which by definition scans disks and updates
lvmetad.

--

The --foreign command line option for report/display commands
(vgs/lvs/pvs/vgdisplay/lvdisplay/pvdisplay) is not directly related to
whether or not lvmetad caches foreign VGs.

By default, foreign VGs are silently ignored and not printed by these
commands.  However, when the --foreign option is used, these commands do
produce output about foreign VGs.

(When --foreign is not used, and the command specifically requests a
foreign VG by name, an error is produced about not accessing foreign VGs,
and the foreign VG is not displayed.)

The decision to report/display foreign VGs or not is independent of
whether lvmetad is caching those VGs.  When lvmetad is caching the foreign
VG, a report/display command run with --foreign will scan disks to read
the foreign VG and give the most up to date version of it (the copy of the
foreign VG in lvmetad may be out of date due to changes to the VG by the
foreign host.)

