[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