summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2014-09-04 16:30:02 -0500
committerDavid Teigland <teigland@redhat.com>2014-09-22 10:32:24 -0500
commitf1dd6983fb9c00514359b644fd3b297e3922a814 (patch)
tree815a7f4f3662490401f896d4096451a273022dfd
parent6be399b5ebb0f9a0e0d345747d1c164cc3911e2e (diff)
downloadlvm2-dev-dct-process-latest.tar.gz
reporter: global lock needed before process_each_pvdev-dct-process-v23dev-dct-process-latest
The block of code that acquires the global lock for process_each_pv() was in the wrong location given the way report_type is munged, and does not equal PVS until later in the function.
-rw-r--r--tools/reporter.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/tools/reporter.c b/tools/reporter.c
index 32a0b0532..919a9aef4 100644
--- a/tools/reporter.c
+++ b/tools/reporter.c
@@ -283,19 +283,6 @@ static int _report(struct cmd_context *cmd, int argc, char **argv,
if (args_are_pvs && argc)
cmd->filter->wipe(cmd->filter);
- /*
- * This moved here as part of factoring it out of process_each_pv.
- * We lock VG_GLOBAL to enable use of metadata cache.
- * This can pause alongide pvscan or vgscan process for a while.
- */
- if ((report_type == PVS || report_type == PVSEGS) && !lvmetad_active()) {
- lock_global = 1;
- if (!lock_vol(cmd, VG_GLOBAL, LCK_VG_READ, NULL)) {
- log_error("Unable to obtain global lock.");
- return ECMD_FAILED;
- }
- }
-
switch (report_type) {
case DEVTYPES:
keys = find_config_tree_str(cmd, report_devtypes_sort_CFG, NULL);
@@ -423,6 +410,19 @@ static int _report(struct cmd_context *cmd, int argc, char **argv,
else if (report_type & LVS)
report_type = LVS;
+ /*
+ * This moved here as part of factoring it out of process_each_pv.
+ * We lock VG_GLOBAL to enable use of metadata cache.
+ * This can pause alongide pvscan or vgscan process for a while.
+ */
+ if ((report_type == PVS || report_type == PVSEGS) && !lvmetad_active()) {
+ lock_global = 1;
+ if (!lock_vol(cmd, VG_GLOBAL, LCK_VG_READ, NULL)) {
+ log_error("Unable to obtain global lock.");
+ return ECMD_FAILED;
+ }
+ }
+
switch (report_type) {
case DEVTYPES:
r = _process_each_devtype(cmd, argc, report_handle);