[linux-lvm] commit c527a0cbfc3 may have a bug

heming.zhao at suse.com heming.zhao at suse.com
Fri Feb 14 15:18:31 UTC 2020


Hello list & David,

The stable-2.02 branch commit c527a0cbfc391645d30407d2 may intruduce a bug.
There is a new function label_scan_pvscan_all(), which uses 
cmd->lvmetad_filter to create devices list for scan.

code:
```
label_scan_pvscan_all
  if (!(iter = dev_iter_create(cmd->lvmetad_filter, 0)))
  ... ...
  while ((dev = dev_iter_get(iter)))
  ... ...
```

It looks it is wrong to use cmd->lvmetad_filter in label_scan_pvscan_all.
The behaviour is changed after the patch applied. (legacy code use 
cmd->full_filter)

When system has duplicated devices and startup, with patch c527a0cb, the 
duplicated devs will pass global_filter (usually it's empty). It makes 
lvmetad fail to build up LV, then the system boot failed. This case is 
not my imagination, one of our customer met recently.

So I suggest to change the cmd->lvmetad_filter to cmd->full_filter in 
label_scan_pvscan_all().

The steps to reproduce:
```
create a loop dev.
use this loop to create some mapper devs. (share the same loop dev)
pvcreate on these mapper devs

# this cmd will output warning msg.
pvscan --cache --config ' devices { filter = [ "r|/dev/loop0|" } '
# this cmd will not output warning msg.
pvscan --cache --config ' devices { filter = [ "a|/dev/loop0|" ] 
global_filter = [ "r|/dev/loop0|" ] } '
```

Thanks.





More information about the linux-lvm mailing list