]> sourceware.org Git - lvm2.git/commit
toollib: process_each_pv: do not acquire list of all devices if not necessary
authorPeter Rajnoha <prajnoha@redhat.com>
Thu, 12 Feb 2015 12:28:00 +0000 (13:28 +0100)
committerPeter Rajnoha <prajnoha@redhat.com>
Thu, 12 Feb 2015 12:46:11 +0000 (13:46 +0100)
commitd38d047eecc16fdcaab7e7452ac68d673afdf674
tree975521231cdaf51b011c9b86b1acd908cb5f8beb
parent0e9f3dba75af605934a130d9a0ae9517229b0661
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:
tools/toollib.c
This page took 0.036626 seconds and 5 git commands to generate.