qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-block] [PATCH 5/5] trace: enable tracing in qemu-img


From: Denis V. Lunev
Subject: [Qemu-block] [PATCH 5/5] trace: enable tracing in qemu-img
Date: Thu, 2 Jun 2016 21:35:45 +0300

The command will work this way:
    qemu-img --trace qcow2* create -f qcow2 1.img 64G

Signed-off-by: Denis V. Lunev <address@hidden>
Suggested by: Daniel P. Berrange <address@hidden>
CC: Eric Blake <address@hidden>
CC: Paolo Bonzini <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
CC: Kevin Wolf <address@hidden>
---
 qemu-img.c    | 24 +++++++++++++++++++++---
 qemu-img.texi | 34 +++++++++++++++++++++++++++++++++-
 2 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index aa85b6c..3b069d8 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -31,6 +31,7 @@
 #include "qemu/config-file.h"
 #include "qemu/option.h"
 #include "qemu/error-report.h"
+#include "qemu/log.h"
 #include "qom/object_interfaces.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/block-backend.h"
@@ -38,6 +39,7 @@
 #include "block/blockjob.h"
 #include "block/qapi.h"
 #include "crypto/init.h"
+#include "trace/control.h"
 #include <getopt.h>
 
 #define QEMU_IMG_VERSION "qemu-img version " QEMU_VERSION QEMU_PKGVERSION \
@@ -87,7 +89,7 @@ static void QEMU_NORETURN help(void)
 {
     const char *help_msg =
            QEMU_IMG_VERSION
-           "usage: qemu-img command [command options]\n"
+           "usage: qemu-img [common options] command [command options]\n"
            "QEMU disk image utility\n"
            "\n"
            "Command syntax:\n"
@@ -156,10 +158,14 @@ static void QEMU_NORETURN help(void)
            "  '-f' first image format\n"
            "  '-F' second image format\n"
            "  '-s' run in Strict mode - fail on different image size or sector 
allocation\n";
+    const char *help_msg2 =
+           "Common options:\n"
+           "  '-T', --trace 
[[enable=]<pattern>][,events=<file>][,file=<file>]\n"
+           "       specify tracing options\n";
 
     printf("%s\nSupported formats:", help_msg);
     bdrv_iterate_format(format_print, NULL);
-    printf("\n");
+    printf("\n\n%s", help_msg2);
     exit(EXIT_SUCCESS);
 }
 
@@ -3473,10 +3479,12 @@ int main(int argc, char **argv)
     const img_cmd_t *cmd;
     const char *cmdname;
     Error *local_error = NULL;
+    char *trace_file = NULL;
     int c;
     static const struct option long_options[] = {
         {"help", no_argument, 0, 'h'},
         {"version", no_argument, 0, 'v'},
+        {"trace", required_argument, NULL, 'T'},
         {0, 0, 0, 0}
     };
 
@@ -3502,8 +3510,9 @@ int main(int argc, char **argv)
 
     qemu_add_opts(&qemu_object_opts);
     qemu_add_opts(&qemu_source_opts);
+    qemu_add_opts(&qemu_trace_opts);
 
-    while ((c = getopt_long(argc, argv, "+h", long_options, NULL)) != -1) {
+    while ((c = getopt_long(argc, argv, "+hT:", long_options, NULL)) != -1) {
         switch (c) {
         case 'h':
             help();
@@ -3511,6 +3520,9 @@ int main(int argc, char **argv)
         case 'v':
             printf(QEMU_IMG_VERSION);
             return 0;
+        case 'T':
+            trace_file = trace_opt_parse(optarg, trace_file);
+            break;
         }
     }
 
@@ -3521,6 +3533,12 @@ int main(int argc, char **argv)
     argv += optind;
     optind = 1;
 
+    if (!trace_init_backends()) {
+        exit(1);
+    }
+    trace_init_file(trace_file);
+    qemu_set_log(LOG_TRACE);
+
     /* find the command */
     for (cmd = img_cmds; cmd->name != NULL; cmd++) {
         if (!strcmp(cmdname, cmd->name)) {
diff --git a/qemu-img.texi b/qemu-img.texi
index afaebdd..36f4240 100644
--- a/qemu-img.texi
+++ b/qemu-img.texi
@@ -1,6 +1,6 @@
 @example
 @c man begin SYNOPSIS
address@hidden @var{command} address@hidden @var{options}]
address@hidden address@hidden @var{options}] @var{command} address@hidden 
@var{options}]
 @c man end
 @end example
 
@@ -16,6 +16,38 @@ inconsistent state.
 
 @c man begin OPTIONS
 
+Common options:
address@hidden @option
address@hidden -T, --trace address@hidden,address@hidden
address@hidden --trace
+
+Specify tracing options.
+
address@hidden @option
address@hidden address@hidden
+Immediately enable events matching @var{pattern}.
+The file must contain one event name (as listed in the @file{trace-events} 
file)
+per line; globbing patterns are accepted too.  This option is only
+available if QEMU IMG has been compiled with the @var{simple}, @var{stderr}
+or @var{ftrace} tracing backend.  To specify multiple events or patterns,
+specify the @option{--trace} option multiple times.
+
+Use @code{--trace help} to print a list of names of trace points.
+
address@hidden address@hidden
+Immediately enable events listed in @var{file}.
+The file must contain one event name (as listed in the @file{trace-events} 
file)
+per line; globbing patterns are accepted too.  This option is only
+available if QEMU IMG has been compiled with the @var{simple}, @var{stderr} or
address@hidden tracing backend.
+
address@hidden address@hidden
+Log output traces to @var{file}.
+This option is only available if QEMU IMG has been compiled with
+the @var{simple} tracing backend.
address@hidden table
address@hidden table
+
 The following commands are supported:
 
 @include qemu-img-cmds.texi
-- 
2.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]