76daa3
From 8d39c106cf84b8d9ba4a2241b07bf9541502d9df Mon Sep 17 00:00:00 2001
76daa3
From: Stefan Hajnoczi <stefanha@redhat.com>
76daa3
Date: Fri, 16 Jun 2017 13:09:47 +0200
76daa3
Subject: [PATCH 7/8] monitor: resurrect handle_qmp_command trace event
76daa3
76daa3
RH-Author: Stefan Hajnoczi <stefanha@redhat.com>
76daa3
Message-id: <20170616130947.6577-3-stefanha@redhat.com>
76daa3
Patchwork-id: 75625
76daa3
O-Subject: [RHV-7.4 qemu-kvm-rhev PATCH 2/2] monitor: resurrect handle_qmp_command trace event
76daa3
Bugzilla: 1457740
76daa3
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
76daa3
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
76daa3
RH-Acked-by: Markus Armbruster <armbru@redhat.com>
76daa3
76daa3
Commit 104fc3027960dd2aa9d310936a6cb201c60e1088 ("qmp: Drop duplicated
76daa3
QMP command object checks") removed the call to
76daa3
trace_handle_qmp_command() while eliminating code duplication.
76daa3
76daa3
This patch brings the trace event back so QEMU-internal trace events can
76daa3
be correlated with the QMP commands that caused them.
76daa3
76daa3
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
76daa3
Reviewed-by: Eric Blake <eblake@redhat.com>
76daa3
Message-id: 20170605104216.22429-3-stefanha@redhat.com
76daa3
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
76daa3
(cherry picked from commit b097efc0027e36fd15a4fc2e415e780611024757)
76daa3
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
76daa3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
---
76daa3
 monitor.c    | 5 +++++
76daa3
 trace-events | 1 +
76daa3
 2 files changed, 6 insertions(+)
76daa3
76daa3
diff --git a/monitor.c b/monitor.c
76daa3
index 65b663e..715995f 100644
76daa3
--- a/monitor.c
76daa3
+++ b/monitor.c
76daa3
@@ -3825,6 +3825,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
76daa3
     QDict *qdict = NULL;
76daa3
     Monitor *mon = cur_mon;
76daa3
     Error *err = NULL;
76daa3
+    QString *req_json;
76daa3
 
76daa3
     req = json_parser_parse_err(tokens, NULL, &err;;
76daa3
     if (!req && !err) {
76daa3
@@ -3842,6 +3843,10 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
76daa3
         qdict_del(qdict, "id");
76daa3
     } /* else will fail qmp_dispatch() */
76daa3
 
76daa3
+    req_json = qobject_to_json(req);
76daa3
+    trace_handle_qmp_command(mon, qstring_get_str(req_json));
76daa3
+    qobject_decref(QOBJECT(req_json));
76daa3
+
76daa3
     rsp = qmp_dispatch(cur_mon->qmp.commands, req);
76daa3
 
76daa3
     if (mon->qmp.commands == &qmp_cap_negotiation_commands) {
76daa3
diff --git a/trace-events b/trace-events
76daa3
index 54e5301..24a5b91 100644
76daa3
--- a/trace-events
76daa3
+++ b/trace-events
76daa3
@@ -69,6 +69,7 @@ monitor_protocol_event_handler(uint32_t event, void *qdict) "event=%d data=%p"
76daa3
 monitor_protocol_event_emit(uint32_t event, void *data) "event=%d data=%p"
76daa3
 monitor_protocol_event_queue(uint32_t event, void *qdict, uint64_t rate) "event=%d data=%p rate=%" PRId64
76daa3
 handle_hmp_command(void *mon, const char *cmdline) "mon %p cmdline: %s"
76daa3
+handle_qmp_command(void *mon, const char *req) "mon %p req: %s"
76daa3
 
76daa3
 # dma-helpers.c
76daa3
 dma_blk_io(void *dbs, void *bs, int64_t offset, bool to_dev) "dbs=%p bs=%p offset=%" PRId64 " to_dev=%d"
76daa3
-- 
76daa3
1.8.3.1
76daa3