qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, pl@kamp.de, stefanha@redhat.com
Subject: [Qemu-devel] [PATCH v3 14/19] docs, qapi: document qemu-img map
Date: Thu, 25 Jul 2013 16:23:12 +0200	[thread overview]
Message-ID: <1374762197-7261-15-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1374762197-7261-1-git-send-email-pbonzini@redhat.com>

Eric Blake also requested including the output in qapi-schema.json,
so that it is published through the introspection mechanism.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 qapi-schema.json | 29 +++++++++++++++++++++++++++++
 qemu-img.texi    | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+)

diff --git a/qapi-schema.json b/qapi-schema.json
index 592bb9c..421ea8a 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -803,6 +803,35 @@
 { 'enum': 'BlockDeviceIoStatus', 'data': [ 'ok', 'failed', 'nospace' ] }
 
 ##
+# @BlockDeviceMapEntry:
+#
+# Entry in the metadata map of the device (returned by "qemu-img map")
+#
+# @start: Offset in the image of the first byte described by this entry
+#         (in bytes)
+#
+# @length: Length of the range described by this entry (in bytes)
+#
+# @depth: Number of layers (0 = top image, 1 = top image's backing file, etc.)
+#         before reaching one for which the range is allocated.  The value is
+#         in the range 0 to the depth of the image chain - 1.
+#
+# @zero: the sectors in this range read as zeros
+#
+# @data: reading the image will actually read data from a file (in particular,
+#        if @offset is present this means that the sectors are not simply
+#        preallocated, but contain actual data in raw format)
+#
+# @offset: if present, the image file stores the data for this range in
+#          raw format at the given offset.
+#
+# Since 1.6
+##
+{ 'type': 'BlockDeviceMapEntry',
+  'data': { 'start': 'int', 'length': 'int', 'depth': 'int', 'zero': 'bool',
+            'data': 'bool', '*offset': 'int' } }
+
+##
 # @BlockDirtyInfo:
 #
 # Block dirty bitmap information.
diff --git a/qemu-img.texi b/qemu-img.texi
index 69f1bda..43f0b31 100644
--- a/qemu-img.texi
+++ b/qemu-img.texi
@@ -213,6 +213,52 @@ To enumerate information about each disk image in the above chain, starting from
 qemu-img info --backing-chain snap2.qcow2
 @end example
 
+@item map [-f @var{fmt}] [--output=@var{ofmt}] @var{filename}
+
+Dump the metadata of image @var{filename} and its backing file chain.
+In particular, this commands dumps the allocation state of every sector
+of @var{filename}, together with the topmost file that allocates it in
+the backing file chain.
+
+Two option formats are possible.  The default format (@code{human})
+only dumps known-nonzero areas of the file.  Known-zero parts of the
+file are omitted altogether, and likewise for parts that are not allocated
+throughout the chain.  @command{qemu-img} output will identify a file
+from where the data can be read, and the offset in the file.  Each line
+will include four fields; for example:
+@example
+0       131072       2        327680
+@end example
+@noindent
+means that 131072 bytes starting at offset 0 in the image are available at
+depth 2 (i.e. by opening in @code{raw} format the backing file of the
+backing file of @var{filename}) starting at offset 327680.  Data that
+is compressed, encrypted, or otherwise not available in raw format will
+cause an error if @code{human} format is in use.
+
+The alternative format @code{json} will return an array of dictionaries
+in JSON format.  It will include similar information in
+the @code{start}, @code{length}, @code{depth}, @code{offset} fields;
+it will also include other more specific information:
+@itemize @minus
+@item
+whether the sectors contain actual data or not (boolean field @code{data};
+if false, the sectors are either unallocated or stored as optimized
+all-zero clusters);
+
+@item
+whether the data is known to read as zero (boolean field @code{zero});
+@end itemize
+
+In JSON format, the @code{offset} field is optional; it is absent in
+cases where @code{human} format would omit the entry or exit with an error.
+If @code{data} is false and the @code{offset} field is present, the
+corresponding sectors in the file are not yet in use, but they are
+preallocated.
+
+For more information, consult @file{include/block/block.h} in QEMU's
+source code.
+
 @item snapshot [-l | -a @var{snapshot} | -c @var{snapshot} | -d @var{snapshot} ] @var{filename}
 
 List, apply, create or delete snapshots in image @var{filename}.
-- 
1.8.3.1

  parent reply	other threads:[~2013-07-25 14:24 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-25 14:22 [Qemu-devel] [PATCH v3 00/19] Add qemu-img subcommand to dump file metadata Paolo Bonzini
2013-07-25 14:22 ` [Qemu-devel] [PATCH v3 01/19] cow: make reads go at a decent speed Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 02/19] cow: make writes go at a less indecent speed Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 03/19] cow: do not call bdrv_co_is_allocated Paolo Bonzini
2013-07-29 13:22   ` Kevin Wolf
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 04/19] block: update bs->total_sectors on writes Paolo Bonzini
2013-07-29 13:13   ` Kevin Wolf
2013-07-29 13:47     ` Paolo Bonzini
2013-07-29 14:10       ` Kevin Wolf
2013-07-29 14:18         ` Paolo Bonzini
2013-08-02  7:05           ` Peter Lieven
2013-08-17  6:27             ` Paolo Bonzini
2013-09-02  7:12               ` Peter Lieven
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 05/19] block: make bdrv_co_is_allocated static Paolo Bonzini
2013-07-29 13:21   ` Kevin Wolf
2013-07-29 13:56     ` Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 06/19] block: remove bdrv_is_allocated_above/bdrv_co_is_allocated_above distinction Paolo Bonzini
2013-07-29 13:34   ` Kevin Wolf
2013-07-29 13:59     ` Paolo Bonzini
2013-07-29 14:15       ` Kevin Wolf
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 07/19] block: expect errors from bdrv_co_is_allocated Paolo Bonzini
2013-07-29 13:43   ` Kevin Wolf
2013-07-29 14:03     ` Paolo Bonzini
2013-07-29 14:17       ` Kevin Wolf
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 08/19] qemu-img: always probe the input image for allocated sectors Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 09/19] block: make bdrv_has_zero_init return false for copy-on-write-images Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 10/19] block: introduce bdrv_get_block_status API Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 11/19] block: define get_block_status return value Paolo Bonzini
2013-07-30 14:14   ` Kevin Wolf
2013-07-30 14:19     ` Paolo Bonzini
2013-07-30 14:26       ` Kevin Wolf
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 12/19] block: return get_block_status data and flags for formats Paolo Bonzini
2013-07-30 14:40   ` Kevin Wolf
2013-07-30 15:15     ` Paolo Bonzini
2013-07-30 15:23       ` Kevin Wolf
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 13/19] qemu-img: add a "map" subcommand Paolo Bonzini
2013-07-30 15:13   ` Kevin Wolf
2013-07-30 15:22     ` Paolo Bonzini
2013-07-30 15:30       ` Kevin Wolf
2013-07-31  8:57       ` Kevin Wolf
2013-07-31 12:13         ` Paolo Bonzini
2013-07-31 13:26           ` Kevin Wolf
2013-07-25 14:23 ` Paolo Bonzini [this message]
2013-07-30 15:48   ` [Qemu-devel] [PATCH v3 14/19] docs, qapi: document qemu-img map Eric Blake
2013-07-30 15:54     ` Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 15/19] block: use bdrv_has_zero_init to return BDRV_BLOCK_ZERO Paolo Bonzini
2013-07-31  9:16   ` Kevin Wolf
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 16/19] raw-posix: return get_block_status data and flags Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 17/19] raw-posix: detect XFS unwritten extents Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 18/19] block: add default get_block_status implementation for protocols Paolo Bonzini
2013-07-31  9:12   ` Kevin Wolf
2013-07-31 12:49     ` Paolo Bonzini
2013-07-25 14:23 ` [Qemu-devel] [PATCH v3 19/19] block: look for zero blocks in bs->file Paolo Bonzini
2013-07-31  9:21   ` Kevin Wolf
2013-07-31 12:53     ` Paolo Bonzini
2013-08-16 15:30 ` [Qemu-devel] [PATCH v3 00/19] Add qemu-img subcommand to dump file metadata Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1374762197-7261-15-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pl@kamp.de \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).