diff options
author | David Teigland <teigland@redhat.com> | 2014-09-04 16:30:02 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2014-10-01 10:49:45 -0500 |
commit | 624d958f80faf38dddf708cb4a4639634633a541 (patch) | |
tree | 43f6f61c4a09fc8e8e540e5d337c790853cf54dd | |
parent | fe870b845dd3193546946485becd4302377736b3 (diff) | |
download | lvm2-624d958f80faf38dddf708cb4a4639634633a541.tar.gz |
reporter: global lock needed before process_each_pvdev-dct-process-v25
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.c | 26 |
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); |