diff --git a/tools/toollib.c b/tools/toollib.c index 98e58798b..4bd233991 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -2785,15 +2785,6 @@ int process_each_pv(struct cmd_context *cmd, dm_list_init(&all_vgnameids); 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: * 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_devices = process_all_pvs && - (cmd->command->flags & ENABLE_ALL_DEVS) && - 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; - } + 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 @@ -2828,6 +2813,19 @@ int process_each_pv(struct cmd_context *cmd, 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, &arg_devices, &arg_tags, process_all_pvs, process_all_devices,