* [Qemu-devel] [PATCH 0/3] QMP: small fixes
@ 2010-11-23 18:49 Luiz Capitulino
2010-11-23 18:49 ` [Qemu-devel] [PATCH 1/3] QMP: Fix default response regression Luiz Capitulino
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Luiz Capitulino @ 2010-11-23 18:49 UTC (permalink / raw)
To: qemu-devel
Please, check individual patches for details.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/3] QMP: Fix default response regression
2010-11-23 18:49 [Qemu-devel] [PATCH 0/3] QMP: small fixes Luiz Capitulino
@ 2010-11-23 18:49 ` Luiz Capitulino
2010-11-23 18:49 ` [Qemu-devel] [PATCH 2/3] QMP: Drop dead code Luiz Capitulino
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2010-11-23 18:49 UTC (permalink / raw)
To: qemu-devel
Commit 030db6e89d dropped do_info() usage from QMP and introduced
qmp_call_query_cmd(). However, the new function doesn't emit QMP's
default OK response when the handler doesn't return data.
Fix that by also calling monitor_protocol_emitter() when
ret_data == NULL, so that the default response is emitted.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
monitor.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/monitor.c b/monitor.c
index 8cee35d..c4efe58 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4426,10 +4426,8 @@ static void qmp_call_query_cmd(Monitor *mon, const mon_cmd_t *cmd)
}
} else {
cmd->mhandler.info_new(mon, &ret_data);
- if (ret_data) {
- monitor_protocol_emitter(mon, ret_data);
- qobject_decref(ret_data);
- }
+ monitor_protocol_emitter(mon, ret_data);
+ qobject_decref(ret_data);
}
}
--
1.7.3.2.245.g03276
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 2/3] QMP: Drop dead code
2010-11-23 18:49 [Qemu-devel] [PATCH 0/3] QMP: small fixes Luiz Capitulino
2010-11-23 18:49 ` [Qemu-devel] [PATCH 1/3] QMP: Fix default response regression Luiz Capitulino
@ 2010-11-23 18:49 ` Luiz Capitulino
2010-12-14 15:23 ` Markus Armbruster
2010-11-23 18:49 ` [Qemu-devel] [PATCH 3/3] QMP: Simplify monitor_json_emitter() Luiz Capitulino
2010-12-14 15:23 ` [Qemu-devel] [PATCH 0/3] QMP: small fixes Markus Armbruster
3 siblings, 1 reply; 6+ messages in thread
From: Luiz Capitulino @ 2010-11-23 18:49 UTC (permalink / raw)
To: qemu-devel
The first if/else clause in handler_audit() makes no sense for two
reasons:
1. this function is now called only by QMP code, so testing if
it's a QMP call makes no sense anymore
2. the else clause first asserts that there's no error in the
monitor object, then it tries to free it!
Just drop it.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
monitor.c | 74 ++++++++++++++++++++++++++++---------------------------------
1 files changed, 34 insertions(+), 40 deletions(-)
diff --git a/monitor.c b/monitor.c
index c4efe58..30be273 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3853,49 +3853,43 @@ void monitor_set_error(Monitor *mon, QError *qerror)
static void handler_audit(Monitor *mon, const mon_cmd_t *cmd, int ret)
{
- if (monitor_ctrl_mode(mon)) {
- if (ret && !monitor_has_error(mon)) {
- /*
- * If it returns failure, it must have passed on error.
- *
- * Action: Report an internal error to the client if in QMP.
- */
- qerror_report(QERR_UNDEFINED_ERROR);
- MON_DEBUG("command '%s' returned failure but did not pass an error\n",
- cmd->name);
- }
+ if (ret && !monitor_has_error(mon)) {
+ /*
+ * If it returns failure, it must have passed on error.
+ *
+ * Action: Report an internal error to the client if in QMP.
+ */
+ qerror_report(QERR_UNDEFINED_ERROR);
+ MON_DEBUG("command '%s' returned failure but did not pass an error\n",
+ cmd->name);
+ }
#ifdef CONFIG_DEBUG_MONITOR
- if (!ret && monitor_has_error(mon)) {
- /*
- * If it returns success, it must not have passed an error.
- *
- * Action: Report the passed error to the client.
- */
- MON_DEBUG("command '%s' returned success but passed an error\n",
- cmd->name);
- }
-
- if (mon_print_count_get(mon) > 0 && strcmp(cmd->name, "info") != 0) {
- /*
- * Handlers should not call Monitor print functions.
- *
- * Action: Ignore them in QMP.
- *
- * (XXX: we don't check any 'info' or 'query' command here
- * because the user print function _is_ called by do_info(), hence
- * we will trigger this check. This problem will go away when we
- * make 'query' commands real and kill do_info())
- */
- MON_DEBUG("command '%s' called print functions %d time(s)\n",
- cmd->name, mon_print_count_get(mon));
- }
-#endif
- } else {
- assert(!monitor_has_error(mon));
- QDECREF(mon->error);
- mon->error = NULL;
+ if (!ret && monitor_has_error(mon)) {
+ /*
+ * If it returns success, it must not have passed an error.
+ *
+ * Action: Report the passed error to the client.
+ */
+ MON_DEBUG("command '%s' returned success but passed an error\n",
+ cmd->name);
+ }
+
+ if (mon_print_count_get(mon) > 0 && strcmp(cmd->name, "info") != 0) {
+ /*
+ * Handlers should not call Monitor print functions.
+ *
+ * Action: Ignore them in QMP.
+ *
+ * (XXX: we don't check any 'info' or 'query' command here
+ * because the user print function _is_ called by do_info(), hence
+ * we will trigger this check. This problem will go away when we
+ * make 'query' commands real and kill do_info())
+ */
+ MON_DEBUG("command '%s' called print functions %d time(s)\n",
+ cmd->name, mon_print_count_get(mon));
}
+#endif
}
static void handle_user_command(Monitor *mon, const char *cmdline)
--
1.7.3.2.245.g03276
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 3/3] QMP: Simplify monitor_json_emitter()
2010-11-23 18:49 [Qemu-devel] [PATCH 0/3] QMP: small fixes Luiz Capitulino
2010-11-23 18:49 ` [Qemu-devel] [PATCH 1/3] QMP: Fix default response regression Luiz Capitulino
2010-11-23 18:49 ` [Qemu-devel] [PATCH 2/3] QMP: Drop dead code Luiz Capitulino
@ 2010-11-23 18:49 ` Luiz Capitulino
2010-12-14 15:23 ` [Qemu-devel] [PATCH 0/3] QMP: small fixes Markus Armbruster
3 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2010-11-23 18:49 UTC (permalink / raw)
To: qemu-devel
Use the ternary operator instead of an if (also fixes bad indentation).
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
monitor.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/monitor.c b/monitor.c
index 30be273..f6f2264 100644
--- a/monitor.c
+++ b/monitor.c
@@ -351,10 +351,8 @@ static void monitor_json_emitter(Monitor *mon, const QObject *data)
{
QString *json;
- if (mon->flags & MONITOR_USE_PRETTY)
- json = qobject_to_json_pretty(data);
- else
- json = qobject_to_json(data);
+ json = mon->flags & MONITOR_USE_PRETTY ? qobject_to_json_pretty(data) :
+ qobject_to_json(data);
assert(json != NULL);
qstring_append_chr(json, '\n');
--
1.7.3.2.245.g03276
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] QMP: Drop dead code
2010-11-23 18:49 ` [Qemu-devel] [PATCH 2/3] QMP: Drop dead code Luiz Capitulino
@ 2010-12-14 15:23 ` Markus Armbruster
0 siblings, 0 replies; 6+ messages in thread
From: Markus Armbruster @ 2010-12-14 15:23 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: qemu-devel
Luiz Capitulino <lcapitulino@redhat.com> writes:
> The first if/else clause in handler_audit() makes no sense for two
> reasons:
>
> 1. this function is now called only by QMP code, so testing if
> it's a QMP call makes no sense anymore
>
> 2. the else clause first asserts that there's no error in the
> monitor object, then it tries to free it!
>
> Just drop it.
>
> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
> ---
> monitor.c | 74 ++++++++++++++++++++++++++++---------------------------------
> 1 files changed, 34 insertions(+), 40 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index c4efe58..30be273 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -3853,49 +3853,43 @@ void monitor_set_error(Monitor *mon, QError *qerror)
>
> static void handler_audit(Monitor *mon, const mon_cmd_t *cmd, int ret)
> {
> - if (monitor_ctrl_mode(mon)) {
> - if (ret && !monitor_has_error(mon)) {
> - /*
> - * If it returns failure, it must have passed on error.
> - *
> - * Action: Report an internal error to the client if in QMP.
> - */
> - qerror_report(QERR_UNDEFINED_ERROR);
> - MON_DEBUG("command '%s' returned failure but did not pass an error\n",
> - cmd->name);
> - }
> + if (ret && !monitor_has_error(mon)) {
> + /*
> + * If it returns failure, it must have passed on error.
> + *
> + * Action: Report an internal error to the client if in QMP.
> + */
> + qerror_report(QERR_UNDEFINED_ERROR);
> + MON_DEBUG("command '%s' returned failure but did not pass an error\n",
> + cmd->name);
> + }
>
> #ifdef CONFIG_DEBUG_MONITOR
> - if (!ret && monitor_has_error(mon)) {
> - /*
> - * If it returns success, it must not have passed an error.
> - *
> - * Action: Report the passed error to the client.
> - */
> - MON_DEBUG("command '%s' returned success but passed an error\n",
> - cmd->name);
> - }
> -
> - if (mon_print_count_get(mon) > 0 && strcmp(cmd->name, "info") != 0) {
> - /*
> - * Handlers should not call Monitor print functions.
> - *
> - * Action: Ignore them in QMP.
> - *
> - * (XXX: we don't check any 'info' or 'query' command here
> - * because the user print function _is_ called by do_info(), hence
> - * we will trigger this check. This problem will go away when we
> - * make 'query' commands real and kill do_info())
> - */
> - MON_DEBUG("command '%s' called print functions %d time(s)\n",
> - cmd->name, mon_print_count_get(mon));
> - }
> -#endif
> - } else {
> - assert(!monitor_has_error(mon));
> - QDECREF(mon->error);
> - mon->error = NULL;
> + if (!ret && monitor_has_error(mon)) {
> + /*
> + * If it returns success, it must not have passed an error.
> + *
> + * Action: Report the passed error to the client.
> + */
> + MON_DEBUG("command '%s' returned success but passed an error\n",
> + cmd->name);
> + }
> +
> + if (mon_print_count_get(mon) > 0 && strcmp(cmd->name, "info") != 0) {
> + /*
> + * Handlers should not call Monitor print functions.
> + *
> + * Action: Ignore them in QMP.
> + *
> + * (XXX: we don't check any 'info' or 'query' command here
> + * because the user print function _is_ called by do_info(), hence
> + * we will trigger this check. This problem will go away when we
> + * make 'query' commands real and kill do_info())
> + */
> + MON_DEBUG("command '%s' called print functions %d time(s)\n",
> + cmd->name, mon_print_count_get(mon));
> }
> +#endif
> }
>
> static void handle_user_command(Monitor *mon, const char *cmdline)
For easier review:
$ git-diff -w
diff --git a/monitor.c b/monitor.c
index 8cee35d..138db06 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3853,7 +3853,6 @@ void monitor_set_error(Monitor *mon, QError *qerror)
static void handler_audit(Monitor *mon, const mon_cmd_t *cmd, int ret)
{
- if (monitor_ctrl_mode(mon)) {
if (ret && !monitor_has_error(mon)) {
/*
* If it returns failure, it must have passed on error.
@@ -3891,11 +3890,6 @@ static void handler_audit(Monitor *mon, const mon_cmd_t *cmd, int ret)
cmd->name, mon_print_count_get(mon));
}
#endif
- } else {
- assert(!monitor_has_error(mon));
- QDECREF(mon->error);
- mon->error = NULL;
- }
}
static void handle_user_command(Monitor *mon, const char *cmdline)
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] QMP: small fixes
2010-11-23 18:49 [Qemu-devel] [PATCH 0/3] QMP: small fixes Luiz Capitulino
` (2 preceding siblings ...)
2010-11-23 18:49 ` [Qemu-devel] [PATCH 3/3] QMP: Simplify monitor_json_emitter() Luiz Capitulino
@ 2010-12-14 15:23 ` Markus Armbruster
3 siblings, 0 replies; 6+ messages in thread
From: Markus Armbruster @ 2010-12-14 15:23 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: qemu-devel
Luiz Capitulino <lcapitulino@redhat.com> writes:
> Please, check individual patches for details.
ACK series
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-12-14 15:23 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-23 18:49 [Qemu-devel] [PATCH 0/3] QMP: small fixes Luiz Capitulino
2010-11-23 18:49 ` [Qemu-devel] [PATCH 1/3] QMP: Fix default response regression Luiz Capitulino
2010-11-23 18:49 ` [Qemu-devel] [PATCH 2/3] QMP: Drop dead code Luiz Capitulino
2010-12-14 15:23 ` Markus Armbruster
2010-11-23 18:49 ` [Qemu-devel] [PATCH 3/3] QMP: Simplify monitor_json_emitter() Luiz Capitulino
2010-12-14 15:23 ` [Qemu-devel] [PATCH 0/3] QMP: small fixes Markus Armbruster
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).