summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2016-08-04 18:15:54 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-08-09 18:49:11 +0200
commit7111d4874822e900cc3216df3fb81d7fa5af359c (patch)
tree5238ee8916f002b9b376c67c83725e41a97e4a2d
parente805ef2d66bc8a06481de648497ff1369965d3c3 (diff)
downloadlvm2-7111d4874822e900cc3216df3fb81d7fa5af359c.tar.gz
lvm: shell: honor log/command_log_selection as default and reset to this value after lastlog
-rw-r--r--tools/lvm.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/lvm.c b/tools/lvm.c
index 2b95c4187..628a29dda 100644
--- a/tools/lvm.c
+++ b/tools/lvm.c
@@ -209,7 +209,8 @@ static void _discard_log_report_content(struct cmd_context *cmd)
int lvm_shell(struct cmd_context *cmd, struct cmdline_context *cmdline)
{
log_report_t saved_log_report_state = log_get_report_state();
- int is_lastlog_cmd, argc, ret;
+ char *orig_command_log_selection = NULL;
+ int is_lastlog_cmd = 0, argc, ret;
char *input = NULL, *args[MAX_ARGS], **argv;
rl_readline_name = "lvm";
@@ -223,10 +224,21 @@ int lvm_shell(struct cmd_context *cmd, struct cmdline_context *cmdline)
if (!report_format_init(cmd))
return_ECMD_FAILED;
+ orig_command_log_selection = dm_pool_strdup(cmd->libmem, find_config_tree_str(cmd, log_command_log_selection_CFG, NULL));
log_set_report_context(LOG_REPORT_CONTEXT_SHELL);
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_CMD);
while (1) {
+ if (cmd->cmd_report.log_rh) {
+ /*
+ * If previous command was lastlog, reset log report selection to
+ * its original value as set by log/command_log_selection config setting.
+ */
+ if (is_lastlog_cmd &&
+ !dm_report_set_selection(cmd->cmd_report.log_rh, orig_command_log_selection))
+ log_error("Failed to reset log report selection.");
+ }
+
log_set_report(cmd->cmd_report.log_rh);
log_set_report_object_name_and_id(NULL, NULL);