mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-30 01:47:56 +03:00
Peter Rajnoha
e0ce728579
tolllib: process_each_pv: always use full_filter unconditionally when getting all devices
(This reverts patch #d95c6154) Filter complete device list through full_filter unconditionally when we're getting the list of *all* devices even in case we're interested only in fraction of those devices - the PVs, not the other devices which are not PVs yet (e.g. pvs vs. pvs -a). We need to do this full filtering whenever we're handling *complete* list of devices, we need to be safe here, mainly if there are any future changes and we'd forgot to change to use proper filtering then. Also properly preventing duplicates if there are any block subsystem components used (mpath, MD ...). Thing here is that (under use_lvmetad=1), cmd->filter can be used only if we're sure that the list of devices we're filtering contains only PVs. We have to use cmd->full_filter otherwise (like it is in case of _get_all_devices fn which acquires complete list of devices, no matter if it is a PV or not). Of course, cmd->full_filter is more extensive than cmd->filter which is only a subset of full_filter. We could optimize this in a way that if we're interested in PVs only during process_each_pv processing (e.g. using pvs in contrast to pvs -a), we'd get the list of PV devices directly from lvmetad from the lvmcache_seed_infos_from_lvmetad fn call which currently updates lvmcache only. We'd add an additional output arg for this fn to get the list of PV devices directly in addition, without a need to iterate over all devices which include non-PVs which we're not interested in anyway, hence we could use only cmd->filter, not the cmd->full_filter. So the code would look something like this: static int _get_all_devices(....) { struct device_id_list *dil; if (interested_in_pvs_only) lvmcache_seed_infos_from_lvmetad(cmd, &dil); /* new "dil" arg */ /* the "dil" list would be filtered through cmd->filter inside lvmcache_seed_infos_from_lvmetad */ else { lvmcache_seed_infos_from_lvmetad(cmd, NULL); dev_iter_create(cmd->full_filter) while (dev = dev_iter_get ...) { dm_list_add(all_devices, &dil->list); } } }
This tree contains the LVM2 and device-mapper tools and libraries. For more information about LVM2 read the changelog in the WHATS_NEW file. Installation instructions are in INSTALL. There is no warranty - see COPYING and COPYING.LIB. Tarballs are available from: ftp://sources.redhat.com/pub/lvm2/ The source code is stored in git: http://git.fedorahosted.org/git/lvm2.git git clone git://git.fedorahosted.org/git/lvm2.git Mailing list for general discussion related to LVM2: linux-lvm@redhat.com Subscribe from https://www.redhat.com/mailman/listinfo/linux-lvm Mailing lists for LVM2 development, patches and commits: lvm-devel@redhat.com Subscribe from https://www.redhat.com/mailman/listinfo/linux-lvm lvm2-commits@lists.fedorahosted.org (Read-only archive of commits) Subscribe from https://fedorahosted.org/mailman/listinfo/lvm2-commits Mailing list for device-mapper development, including kernel patches and multipath-tools: dm-devel@redhat.com Subscribe from https://www.redhat.com/mailman/listinfo/dm-devel The source code repository used until 7th June 2012 is accessible here: http://sources.redhat.com/cgi-bin/cvsweb.cgi/LVM2/?cvsroot=lvm2.
Description
Languages
C
75.5%
Shell
18.7%
Python
2.9%
M4
1%
Makefile
0.8%
Other
1%