qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>, John Snow <jsnow@redhat.com>,
	Fam Zheng <famz@redhat.com>
Subject: [Qemu-devel] [PATCH 04/17] block/vmdk: Add blkdebug events
Date: Thu, 23 Nov 2017 03:08:19 +0100	[thread overview]
Message-ID: <20171123020832.8165-5-mreitz@redhat.com> (raw)
In-Reply-To: <20171123020832.8165-1-mreitz@redhat.com>

This is certainly not complete, but it includes at least write_aio and
read_aio.

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 block/vmdk.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/block/vmdk.c b/block/vmdk.c
index 1ae47b1c2e..d71cec4f31 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -1075,6 +1075,8 @@ static int get_whole_cluster(BlockDriverState *bs,
     /* Read backing data before skip range */
     if (skip_start_bytes > 0) {
         if (bs->backing) {
+            /* qcow2 emits this on bs->file instead of bs->backing */
+            BLKDBG_EVENT(extent->file, BLKDBG_COW_READ);
             ret = bdrv_pread(bs->backing, offset, whole_grain,
                              skip_start_bytes);
             if (ret < 0) {
@@ -1082,6 +1084,7 @@ static int get_whole_cluster(BlockDriverState *bs,
                 goto exit;
             }
         }
+        BLKDBG_EVENT(extent->file, BLKDBG_COW_WRITE);
         ret = bdrv_pwrite(extent->file, cluster_offset, whole_grain,
                           skip_start_bytes);
         if (ret < 0) {
@@ -1092,6 +1095,8 @@ static int get_whole_cluster(BlockDriverState *bs,
     /* Read backing data after skip range */
     if (skip_end_bytes < cluster_bytes) {
         if (bs->backing) {
+            /* qcow2 emits this on bs->file instead of bs->backing */
+            BLKDBG_EVENT(extent->file, BLKDBG_COW_READ);
             ret = bdrv_pread(bs->backing, offset + skip_end_bytes,
                              whole_grain + skip_end_bytes,
                              cluster_bytes - skip_end_bytes);
@@ -1100,6 +1105,7 @@ static int get_whole_cluster(BlockDriverState *bs,
                 goto exit;
             }
         }
+        BLKDBG_EVENT(extent->file, BLKDBG_COW_WRITE);
         ret = bdrv_pwrite(extent->file, cluster_offset + skip_end_bytes,
                           whole_grain + skip_end_bytes,
                           cluster_bytes - skip_end_bytes);
@@ -1120,6 +1126,7 @@ static int vmdk_L2update(VmdkExtent *extent, VmdkMetaData *m_data,
 {
     offset = cpu_to_le32(offset);
     /* update L2 table */
+    BLKDBG_EVENT(extent->file, BLKDBG_L2_UPDATE);
     if (bdrv_pwrite_sync(extent->file,
                 ((int64_t)m_data->l2_offset * 512)
                     + (m_data->l2_index * sizeof(offset)),
@@ -1218,6 +1225,7 @@ static int get_cluster_offset(BlockDriverState *bs,
         }
     }
     l2_table = extent->l2_cache + (min_index * extent->l2_size);
+    BLKDBG_EVENT(extent->file, BLKDBG_L2_LOAD);
     if (bdrv_pread(extent->file,
                 (int64_t)l2_offset * 512,
                 l2_table,
@@ -1393,9 +1401,13 @@ static int vmdk_write_extent(VmdkExtent *extent, int64_t cluster_offset,
             .iov_len    = n_bytes,
         };
         qemu_iovec_init_external(&local_qiov, &iov, 1);
+
+        BLKDBG_EVENT(extent->file, BLKDBG_WRITE_COMPRESSED);
     } else {
         qemu_iovec_init(&local_qiov, qiov->niov);
         qemu_iovec_concat(&local_qiov, qiov, qiov_offset, n_bytes);
+
+        BLKDBG_EVENT(extent->file, BLKDBG_WRITE_AIO);
     }
 
     write_offset = cluster_offset + offset_in_cluster;
@@ -1437,6 +1449,7 @@ static int vmdk_read_extent(VmdkExtent *extent, int64_t cluster_offset,
 
 
     if (!extent->compressed) {
+        BLKDBG_EVENT(extent->file, BLKDBG_READ_AIO);
         ret = bdrv_co_preadv(extent->file,
                              cluster_offset + offset_in_cluster, bytes,
                              qiov, 0);
@@ -1450,6 +1463,7 @@ static int vmdk_read_extent(VmdkExtent *extent, int64_t cluster_offset,
     buf_bytes = cluster_bytes * 2;
     cluster_buf = g_malloc(buf_bytes);
     uncomp_buf = g_malloc(cluster_bytes);
+    BLKDBG_EVENT(extent->file, BLKDBG_READ_COMPRESSED);
     ret = bdrv_pread(extent->file,
                 cluster_offset,
                 cluster_buf, buf_bytes);
@@ -1527,6 +1541,8 @@ vmdk_co_preadv(BlockDriverState *bs, uint64_t offset, uint64_t bytes,
                 qemu_iovec_reset(&local_qiov);
                 qemu_iovec_concat(&local_qiov, qiov, bytes_done, n_bytes);
 
+                /* qcow2 emits this on bs->file instead of bs->backing */
+                BLKDBG_EVENT(bs->file, BLKDBG_READ_BACKING_AIO);
                 ret = bdrv_co_preadv(bs->backing, offset, n_bytes,
                                      &local_qiov, 0);
                 if (ret < 0) {
-- 
2.13.6

  parent reply	other threads:[~2017-11-23  2:09 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23  2:08 [Qemu-devel] [PATCH 00/17] iotests: Fix iotests for weird formats/options Max Reitz
2017-11-23  2:08 ` [Qemu-devel] [PATCH 01/17] block/vmdk: Fix , instead of ; at end of line Max Reitz
2017-11-29 16:20   ` Eric Blake
2017-11-30  2:43   ` Fam Zheng
2017-11-23  2:08 ` [Qemu-devel] [PATCH 02/17] qcow2: No persistent dirty bitmaps for compat=0.10 Max Reitz
2017-11-29 16:23   ` Eric Blake
2017-11-23  2:08 ` [Qemu-devel] [PATCH 03/17] block/qcow: Add blkdebug events Max Reitz
2017-11-30 15:38   ` Eric Blake
2017-11-23  2:08 ` Max Reitz [this message]
2017-11-30  2:58   ` [Qemu-devel] [PATCH 04/17] block/vmdk: " Fam Zheng
2017-11-23  2:08 ` [Qemu-devel] [PATCH 05/17] iotests: Fix _img_info for backslashes Max Reitz
2017-11-30  2:59   ` Fam Zheng
2017-11-23  2:08 ` [Qemu-devel] [PATCH 06/17] iotests: Drop format-specific in _filter_img_info Max Reitz
2017-11-30  3:16   ` Fam Zheng
2017-11-30 13:22     ` Max Reitz
2017-11-30 15:42     ` Eric Blake
2017-12-01  1:33       ` Fam Zheng
2017-11-30 15:44   ` Eric Blake
2017-11-23  2:08 ` [Qemu-devel] [PATCH 07/17] iotests: Forbid 020 for non-file protocols Max Reitz
2017-11-30  2:52   ` Fam Zheng
2017-11-23  2:08 ` [Qemu-devel] [PATCH 08/17] iotests: Skip 103 for refcount_bits=1 Max Reitz
2017-11-30  3:18   ` Fam Zheng
2017-11-30 13:23     ` Max Reitz
2017-12-09  1:36       ` John Snow
2017-12-11 17:17         ` Max Reitz
2017-12-11 17:35           ` John Snow
2017-11-23  2:08 ` [Qemu-devel] [PATCH 09/17] iotests: Disable some tests for compat=0.10 Max Reitz
2017-12-09  1:46   ` John Snow
2017-12-09 16:53     ` Eric Blake
2018-01-17 13:41       ` Max Reitz
2018-01-17 16:56         ` Eric Blake
2017-11-23  2:08 ` [Qemu-devel] [PATCH 10/17] iotests: Fix 020 for vmdk Max Reitz
2017-11-29 22:12   ` John Snow
2017-11-30  2:44   ` Fam Zheng
2017-11-23  2:08 ` [Qemu-devel] [PATCH 11/17] iotests: Fix 051 for compat=0.10 Max Reitz
2017-11-23  2:08 ` [Qemu-devel] [PATCH 12/17] iotests: Fix 059's reference output Max Reitz
2017-11-29 22:11   ` John Snow
2017-11-30  2:43   ` Fam Zheng
2017-11-23  2:08 ` [Qemu-devel] [PATCH 13/17] iotests: Fix 067 for compat=0.10 Max Reitz
2017-12-09  1:07   ` John Snow
2017-11-23  2:08 ` [Qemu-devel] [PATCH 14/17] iotests: Make 089 compatible with compat=0.10 Max Reitz
2017-12-09  1:08   ` John Snow
2017-11-23  2:08 ` [Qemu-devel] [PATCH 15/17] iotests: Make 184 image-less Max Reitz
2017-12-09  1:12   ` John Snow
2017-11-23  2:08 ` [Qemu-devel] [PATCH 16/17] iotests: Make 191 work with qcow2 options Max Reitz
2017-12-09  1:31   ` John Snow
2017-11-23  2:08 ` [Qemu-devel] [PATCH 17/17] iotests: Filter compat-dependent info in 198 Max Reitz
2017-12-09  1:33   ` John Snow
2017-11-23  2:12 ` [Qemu-devel] [PATCH 00/17] iotests: Fix iotests for weird formats/options Max Reitz
2017-11-23  2:51 ` no-reply
2017-11-23  7:24 ` Fam Zheng
2017-11-27 15:00   ` Max Reitz
2017-11-29 19:24 ` [Qemu-devel] [PATCH 18/17] iotests: Make 059 pass on machines with little RAM Max Reitz
2017-11-30  2:51   ` Fam Zheng
2018-01-17 13:41 ` [Qemu-devel] [PATCH 00/17] iotests: Fix iotests for weird formats/options Max Reitz

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=20171123020832.8165-5-mreitz@redhat.com \
    --to=mreitz@redhat.com \
    --cc=famz@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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).