[lvm-devel] master - toollib: process_each_pv: fix commit d38d047e which worked for processing "all devices", but didn't work for "all PVs"

Peter Rajnoha prajnoha at fedoraproject.org
Thu Feb 12 13:18:41 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=d95c6154ffe19e629a1403b45f6e8371f9dc6d70
Commit:        d95c6154ffe19e629a1403b45f6e8371f9dc6d70
Parent:        e52c998c490a4895fb7decfcde462455a68dc8e5
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Thu Feb 12 14:14:45 2015 +0100
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Thu Feb 12 14:14:45 2015 +0100

toollib: process_each_pv: fix commit d38d047e which worked for processing "all devices", but didn't work for "all PVs"

We still need to get the list as the calls underneath process_each_pv
rely on this list. But still keep the change related to the filters -
if we're processing all devices, we need to use cmd->full_filter.
If we're processing only PVs, we can use cmd->filter only to save
some time which would be spent in filtering code.
---
 tools/toollib.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/toollib.c b/tools/toollib.c
index 6452605..43c7fc1 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -2330,7 +2330,8 @@ static int _get_arg_devices(struct cmd_context *cmd,
 	return ret_max;
 }
 
-static int _get_all_devices(struct cmd_context *cmd, struct dm_list *all_devices)
+static int _get_all_devices(struct cmd_context *cmd, struct dm_list *all_devices,
+			    int use_full_filter)
 {
 	struct dev_iter *iter;
 	struct device *dev;
@@ -2339,7 +2340,7 @@ static int _get_all_devices(struct cmd_context *cmd, struct dm_list *all_devices
 
 	lvmcache_seed_infos_from_lvmetad(cmd);
 
-	if (!(iter = dev_iter_create(cmd->full_filter, 1))) {
+	if (!(iter = dev_iter_create(use_full_filter ? cmd->full_filter : cmd->filter, 1))) {
 		log_error("dev_iter creation failed.");
 		return ECMD_FAILED;
 	}
@@ -2736,8 +2737,7 @@ int process_each_pv(struct cmd_context *cmd,
 	 * from all VGs are processed first, removing them from all_devices.  Then
 	 * any devs remaining in all_devices are processed.
 	 */
-	if (process_all_devices &&
-	    (ret = _get_all_devices(cmd, &all_devices) != ECMD_PROCESSED)) {
+	if ((ret = _get_all_devices(cmd, &all_devices, process_all_devices) != ECMD_PROCESSED)) {
 		stack;
 		return ret;
 	}




More information about the lvm-devel mailing list