1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-02 01:18:26 +03:00

toollib: Reorder process_each_pv initialisation.

Perform cheaper command line-based validation before more-expensive
processing and scanning.
This commit is contained in:
Alasdair G Kergon 2015-03-18 23:34:46 +00:00
parent 5bf74f2997
commit 19c3851d9c

View File

@ -2785,15 +2785,6 @@ int process_each_pv(struct cmd_context *cmd,
dm_list_init(&all_vgnameids); dm_list_init(&all_vgnameids);
dm_list_init(&all_devices); dm_list_init(&all_devices);
/*
* Read all the vgs first because this has the effect of initializing
* other device/lvmcache info that is needed when creating device lists.
*/
if ((ret = _get_vgnameids_on_system(cmd, &all_vgnameids, only_this_vgname, 1) != ECMD_PROCESSED)) {
stack;
return ret;
}
/* /*
* Create two lists from argv: * Create two lists from argv:
* arg_pvnames: pvs explicitly named in argv * arg_pvnames: pvs explicitly named in argv
@ -2809,14 +2800,8 @@ int process_each_pv(struct cmd_context *cmd,
process_all_pvs = dm_list_empty(&arg_pvnames) && dm_list_empty(&arg_tags); process_all_pvs = dm_list_empty(&arg_pvnames) && dm_list_empty(&arg_tags);
process_all_devices = process_all_pvs && process_all_devices = process_all_pvs && (cmd->command->flags & ENABLE_ALL_DEVS) &&
(cmd->command->flags & ENABLE_ALL_DEVS) && arg_count(cmd, all_ARG);
arg_count(cmd, all_ARG);
if ((ret = _get_arg_devices(cmd, &arg_pvnames, &arg_devices) != ECMD_PROCESSED)) {
/* get_arg_devices reports the error for any PV names not found. */
ret_max = ECMD_FAILED;
}
/* /*
* If the caller wants to process all devices (not just PVs), then all PVs * If the caller wants to process all devices (not just PVs), then all PVs
@ -2828,6 +2813,19 @@ int process_each_pv(struct cmd_context *cmd,
return ret; return ret;
} }
if ((ret = _get_arg_devices(cmd, &arg_pvnames, &arg_devices) != ECMD_PROCESSED))
/* get_arg_devices reports the error for any PV names not found. */
ret_max = ECMD_FAILED;
/*
* Read all the vgs first because this has the effect of initializing
* other device/lvmcache info that is needed when creating device lists.
*/
if ((ret = _get_vgnameids_on_system(cmd, &all_vgnameids, only_this_vgname, 1) != ECMD_PROCESSED)) {
stack;
return ret;
}
ret = _process_pvs_in_vgs(cmd, flags, &all_vgnameids, &all_devices, ret = _process_pvs_in_vgs(cmd, flags, &all_vgnameids, &all_devices,
&arg_devices, &arg_tags, &arg_devices, &arg_tags,
process_all_pvs, process_all_devices, process_all_pvs, process_all_devices,