1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
lvm2/lib
Peter Rajnoha 8c27c52749 dev-cache: also index VGIDs and LVIDs if using persistent .cache file
If we're using persistent .cache file, we're reading this file instead
of traversing the /dev content. Fix missing indexing by VGID and LVID
here - hook this into persistent_filter_load where we populate device
cache from persistent .cache file instead of scanning /dev.

For example, inducing situation in which we warn about different device
actually used than what LVM thinks should be used based on metadata:

$ lsblk -s /dev/vg/lvol0
NAME     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vg-lvol0 253:4    0  124M  0 lvm
`-loop1    7:1    0  128M  0 loop

$ lvmconfig --type diff

global {
	use_lvmetad=0
}
devices {
	obtain_device_list_from_udev=0
}

(obtain_device_list_from_udev=0 also means the persistent .cache file is used)

Before this patch - pvs is fine as it does the dev scan, but lvs relies
on persistent .cache file and it misses the VGID/LVID indices to check
and warn about incorrect devices used:

$ pvs
  Found duplicate PV B9gXTHkIdEIiMVwcOoT2LX3Ywh4YIHgR: using /dev/loop0 not /dev/loop1
  Using duplicate PV /dev/loop0 without holders, ignoring /dev/loop1
  WARNING: Device mismatch detected for vg/lvol0 which is accessing /dev/loop1 instead of /dev/loop0.
  PV          VG Fmt  Attr PSize   PFree
  /dev/loop0 vg lvm2 a--  124.00m    0

$ lvs
  Found duplicate PV B9gXTHkIdEIiMVwcOoT2LX3Ywh4YIHgR: using /dev/loop0 not /dev/loop1
  Using duplicate PV /dev/loop0 without holders, ignoring /dev/loop1
  LV    VG Attr       LSize
  lvol0 vg -wi-a----- 124.00m

With this patch applied - both pvs and lvs is fine - the indices are
always created correctly (lvs just an example here, other LVM commands
that rely on persistent .cache file are fixed with this patch too):

$ pvs
  Found duplicate PV B9gXTHkIdEIiMVwcOoT2LX3Ywh4YIHgR: using /dev/loop0 not /dev/loop1
  Using duplicate PV /dev/loop0 without holders, ignoring /dev/loop1
  WARNING: Device mismatch detected for vg/lvol0 which is accessing /dev/loop1 instead of /dev/loop0.
  PV          VG Fmt  Attr PSize   PFree
  /dev/loop0 vg lvm2 a--  124.00m    0

$ lvs
  Found duplicate PV B9gXTHkIdEIiMVwcOoT2LX3Ywh4YIHgR: using /dev/loop0 not /dev/loop1
  Using duplicate PV /dev/loop0 without holders, ignoring /dev/loop1
  WARNING: Device mismatch detected for vg/lvol0 which is accessing /dev/loop1 instead of /dev/loop0.
  LV    VG Attr       LSize
  lvol0 vg -wi-a----- 124.00m
2016-03-30 11:00:01 +02:00
..
activate revert: 6129d2e64d 2016-03-24 14:06:12 +01:00
cache cleanup: drop unneeded test 2016-02-25 23:30:25 +01:00
cache_segtype activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
commands dbus: add notification from commands 2016-03-07 10:06:09 -06:00
config remove unused define 2016-03-09 13:38:04 -06:00
datastruct doc: change fsf address 2016-01-21 12:11:37 +01:00
device dev-cache: also index VGIDs and LVIDs if using persistent .cache file 2016-03-30 11:00:01 +02:00
display commands: lvdisplay: recognize -H|--history switch 2016-03-04 10:27:45 +01:00
error activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
filters dev-cache: also index VGIDs and LVIDs if using persistent .cache file 2016-03-30 11:00:01 +02:00
format1 redefine pvcreate structs 2016-02-25 09:14:10 -06:00
format_pool redefine pvcreate structs 2016-02-25 09:14:10 -06:00
format_text gcc: cast time_t to 64bit 2016-03-10 18:38:54 +01:00
freeseg doc: change fsf address 2016-01-21 12:11:37 +01:00
label doc: change fsf address 2016-01-21 12:11:37 +01:00
locking lvmlockd: fix sparse snapshot case 2016-02-23 15:45:25 -06:00
log dbus: add notification from commands 2016-03-07 10:06:09 -06:00
lvmpolld doc: change fsf address 2016-01-21 12:11:37 +01:00
metadata activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
mirror activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
misc pvs: replace 'unknown device' with [unknown] 2016-03-01 11:12:03 -06:00
mm doc: change fsf address 2016-01-21 12:11:37 +01:00
notify vgscan: add --notifydbus to send a notification 2016-03-07 10:50:45 -06:00
properties doc: change fsf address 2016-01-21 12:11:37 +01:00
raid activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
replicator doc: change fsf address 2016-01-21 12:11:37 +01:00
report properties: use proper 'get' variant for unimplemented _pv_major_get and _pv_minor_get fns 2016-03-23 10:52:46 +01:00
snapshot activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
striped activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
thin metadata: add support for interconnection of thin pool LV segment with indirect origin 2016-03-03 13:46:40 +01:00
unknown doc: change fsf address 2016-01-21 12:11:37 +01:00
uuid doc: change fsf address 2016-01-21 12:11:37 +01:00
zero activate: Use macros for target and module names. 2016-03-22 17:46:15 +00:00
Makefile.in dbus: add notification from commands 2016-03-07 10:06:09 -06:00