summaryrefslogtreecommitdiff
path: root/tools/toollib.c
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2015-12-11 14:02:36 -0600
committerDavid Teigland <teigland@redhat.com>2015-12-11 14:20:00 -0600
commit90cf5acff15a26d87d4cabf6601e82846d608a69 (patch)
tree43116806c72f680d73484de614de1265ace5c71d /tools/toollib.c
parent3e48354f2d458e80cab4c096b2869bdc1ad463c3 (diff)
downloadlvm2-dev-dct-dev-cache-full-scan.tar.gz
process_each_pv: do full scan earlier to find new devicesdev-dct-dev-cache-full-scan
Before commit c1f246fedfc349c25749da501e68a7f70bd122b0, _get_all_devices() did a full device scan before get_vgnameids() was called. New devices would be added to the dev-cache before label scanning done by get_vgnameids. So, labels would be read from new devices by the first 'pvs' command. After that commit, _get_all_devices() was called after get_vgnameids() was finished with label scanning. So, new devices would be missed by the label scanning, and would not appear to be lvm devices to the first 'pvs' command. A new device would be added to .cache by the first command, so the second 'pvs' command would scan labels from it in get_vgnameids(). Now, the full device scan is factored out of get_all_devices() and called by itself at the start of the command so that new devices will be known before get_vgnameids() scans labels.
Diffstat (limited to 'tools/toollib.c')
-rw-r--r--tools/toollib.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/toollib.c b/tools/toollib.c
index e03aaf77f..fb6edadde 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -3340,6 +3340,13 @@ int process_each_pv(struct cmd_context *cmd,
return_ECMD_FAILED;
/*
+ * This full scan would be done by _get_all_devices() if
+ * it were not done here first. It's called here first
+ * so that get_vgnameids() will look at any new devices.
+ */
+ dev_cache_full_scan(cmd->full_filter);
+
+ /*
* Need pvid's set on all PVs before processing so that pvid's
* can be compared to find duplicates while processing.
*/