mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
toollib: process_each_pv: do not acquire list of all devices if not necessary
List of all devices is only needed if we want to process devices which are not PVs (e.g. pvs -a). But if this is not the case, it's useless to get the list of all devices and then discard it without any use, which is exactly what happened in process_each_pv where the code was never reached and the list was unused if we were processing just PVs, not all PV-capable devices: int process_each_pv(...) { ... process_all_devices = process_all_pvs && (cmd->command->flags & ENABLE_ALL_DEVS) && arg_count(cmd, all_ARG); ... /* * If the caller wants to process all devices (not just PVs), then all PVs * from all VGs are processed first, removing them from all_devices. Then * any devs remaining in all_devices are processed. */ _get_all_devices(cmd, &all_devices); ... ret = _process_pvs_in_vgs(...); ... if (!process_all_devices) goto out; ret = _process_device_list(cmd, &all_devices, handle, process_single_pv); ... } This patch adds missing check for "process_all_devices" and it gets the list of all (including non-PV) devices only if needed:
This commit is contained in:
parent
0e9f3dba75
commit
d38d047eec
@ -2736,7 +2736,8 @@ int process_each_pv(struct cmd_context *cmd,
|
|||||||
* from all VGs are processed first, removing them from all_devices. Then
|
* from all VGs are processed first, removing them from all_devices. Then
|
||||||
* any devs remaining in all_devices are processed.
|
* any devs remaining in all_devices are processed.
|
||||||
*/
|
*/
|
||||||
if ((ret = _get_all_devices(cmd, &all_devices) != ECMD_PROCESSED)) {
|
if (process_all_devices &&
|
||||||
|
(ret = _get_all_devices(cmd, &all_devices) != ECMD_PROCESSED)) {
|
||||||
stack;
|
stack;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user