Merge remote branch 'qmp/for-anthony' into staging
This commit is contained in:
commit
fef395782d
86
monitor.c
86
monitor.c
|
@ -351,10 +351,8 @@ static void monitor_json_emitter(Monitor *mon, const QObject *data)
|
||||||
{
|
{
|
||||||
QString *json;
|
QString *json;
|
||||||
|
|
||||||
if (mon->flags & MONITOR_USE_PRETTY)
|
json = mon->flags & MONITOR_USE_PRETTY ? qobject_to_json_pretty(data) :
|
||||||
json = qobject_to_json_pretty(data);
|
qobject_to_json(data);
|
||||||
else
|
|
||||||
json = qobject_to_json(data);
|
|
||||||
assert(json != NULL);
|
assert(json != NULL);
|
||||||
|
|
||||||
qstring_append_chr(json, '\n');
|
qstring_append_chr(json, '\n');
|
||||||
|
@ -4172,49 +4170,43 @@ void monitor_set_error(Monitor *mon, QError *qerror)
|
||||||
|
|
||||||
static void handler_audit(Monitor *mon, const mon_cmd_t *cmd, int ret)
|
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 (ret && !monitor_has_error(mon)) {
|
/*
|
||||||
/*
|
* If it returns failure, it must have passed on error.
|
||||||
* If it returns failure, it must have passed on error.
|
*
|
||||||
*
|
* Action: Report an internal error to the client if in QMP.
|
||||||
* Action: Report an internal error to the client if in QMP.
|
*/
|
||||||
*/
|
qerror_report(QERR_UNDEFINED_ERROR);
|
||||||
qerror_report(QERR_UNDEFINED_ERROR);
|
MON_DEBUG("command '%s' returned failure but did not pass an error\n",
|
||||||
MON_DEBUG("command '%s' returned failure but did not pass an error\n",
|
cmd->name);
|
||||||
cmd->name);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_MONITOR
|
#ifdef CONFIG_DEBUG_MONITOR
|
||||||
if (!ret && monitor_has_error(mon)) {
|
if (!ret && monitor_has_error(mon)) {
|
||||||
/*
|
/*
|
||||||
* If it returns success, it must not have passed an error.
|
* If it returns success, it must not have passed an error.
|
||||||
*
|
*
|
||||||
* Action: Report the passed error to the client.
|
* Action: Report the passed error to the client.
|
||||||
*/
|
*/
|
||||||
MON_DEBUG("command '%s' returned success but passed an error\n",
|
MON_DEBUG("command '%s' returned success but passed an error\n",
|
||||||
cmd->name);
|
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 (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)
|
static void handle_user_command(Monitor *mon, const char *cmdline)
|
||||||
|
@ -4745,10 +4737,8 @@ static void qmp_call_query_cmd(Monitor *mon, const mon_cmd_t *cmd)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cmd->mhandler.info_new(mon, &ret_data);
|
cmd->mhandler.info_new(mon, &ret_data);
|
||||||
if (ret_data) {
|
monitor_protocol_emitter(mon, ret_data);
|
||||||
monitor_protocol_emitter(mon, ret_data);
|
qobject_decref(ret_data);
|
||||||
qobject_decref(ret_data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -495,7 +495,7 @@ EQMP
|
||||||
|
|
||||||
{
|
{
|
||||||
.name = "migrate_set_speed",
|
.name = "migrate_set_speed",
|
||||||
.args_type = "value:f",
|
.args_type = "value:o",
|
||||||
.params = "value",
|
.params = "value",
|
||||||
.help = "set maximum speed (in bytes) for migrations",
|
.help = "set maximum speed (in bytes) for migrations",
|
||||||
.user_print = monitor_user_noop,
|
.user_print = monitor_user_noop,
|
||||||
|
|
Loading…
Reference in a new issue