mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
report: fix handling of reports with pure label fields
Two problems fixed by this patch: - PV tags were not recognized at all when using them with pvs report that has only label fields (regression since 2.02.105) - incorrect persistent .cache file to be generated after pvs report that has only label fields (regression since 2.02.106) These bugs come from the transition from process_each_pv to process_each_label introduced by commit67a7b7a87d
and commit490226fc47
and related.
This commit is contained in:
parent
8bceb1e0bb
commit
9ea77b788b
@ -1,5 +1,7 @@
|
|||||||
Version 2.02.117 -
|
Version 2.02.117 -
|
||||||
====================================
|
====================================
|
||||||
|
Fix incorrect persistent .cache after report with label fields only (2.02.106).
|
||||||
|
Reinstate PV tag recognition for pvs if reporting label fields only (2.02.105).
|
||||||
Rescan devices before vgimport with lvmetad so exported VG is seen.
|
Rescan devices before vgimport with lvmetad so exported VG is seen.
|
||||||
Fix hang by adjusting cluster mirror regionsize, avoiding CPG msg limit.
|
Fix hang by adjusting cluster mirror regionsize, avoiding CPG msg limit.
|
||||||
Do not crash when --cachepolicy is given without --cachesettings.
|
Do not crash when --cachepolicy is given without --cachesettings.
|
||||||
|
@ -566,6 +566,39 @@ int report_for_selection(struct cmd_context *cmd,
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _check_pv_list(struct cmd_context *cmd, int argc, char **argv,
|
||||||
|
report_type_t *report_type, unsigned *args_are_pvs)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
int rescan_done = 0;
|
||||||
|
|
||||||
|
*args_are_pvs = (*report_type == PVS ||
|
||||||
|
*report_type == LABEL ||
|
||||||
|
*report_type == PVSEGS) ? 1 : 0;
|
||||||
|
|
||||||
|
if (args_are_pvs && argc) {
|
||||||
|
for (i = 0; i < argc; i++) {
|
||||||
|
if (!dev_cache_get(argv[i], cmd->full_filter) && !rescan_done) {
|
||||||
|
cmd->filter->wipe(cmd->filter);
|
||||||
|
/* FIXME scan only one device */
|
||||||
|
lvmcache_label_scan(cmd, 0);
|
||||||
|
rescan_done = 1;
|
||||||
|
}
|
||||||
|
if (*argv[i] == '@') {
|
||||||
|
if (*report_type == LABEL)
|
||||||
|
*report_type = PVS;
|
||||||
|
/*
|
||||||
|
* If we changed the report_type and we did rescan,
|
||||||
|
* no need to iterate over dev list further - nothing
|
||||||
|
* else would change.
|
||||||
|
*/
|
||||||
|
if (rescan_done)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int _report(struct cmd_context *cmd, int argc, char **argv,
|
static int _report(struct cmd_context *cmd, int argc, char **argv,
|
||||||
report_type_t report_type)
|
report_type_t report_type)
|
||||||
{
|
{
|
||||||
@ -589,15 +622,8 @@ static int _report(struct cmd_context *cmd, int argc, char **argv,
|
|||||||
quoted = find_config_tree_bool(cmd, report_quoted_CFG, NULL);
|
quoted = find_config_tree_bool(cmd, report_quoted_CFG, NULL);
|
||||||
columns_as_rows = find_config_tree_bool(cmd, report_colums_as_rows_CFG, NULL);
|
columns_as_rows = find_config_tree_bool(cmd, report_colums_as_rows_CFG, NULL);
|
||||||
|
|
||||||
args_are_pvs = (report_type == PVS ||
|
/* Check PV specifics and do extra changes/actions if needed. */
|
||||||
report_type == LABEL ||
|
_check_pv_list(cmd, argc, argv, &report_type, &args_are_pvs);
|
||||||
report_type == PVSEGS) ? 1 : 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FIXME Trigger scans based on unrecognised listed devices instead.
|
|
||||||
*/
|
|
||||||
if (args_are_pvs && argc)
|
|
||||||
cmd->filter->wipe(cmd->filter);
|
|
||||||
|
|
||||||
switch (report_type) {
|
switch (report_type) {
|
||||||
case DEVTYPES:
|
case DEVTYPES:
|
||||||
|
Loading…
Reference in New Issue
Block a user