diff mbox

[V4,5/6] blkdebug: add debug events for snapshot

Message ID 1381787553-12497-6-git-send-email-xiawenc@linux.vnet.ibm.com
State New
Headers show

Commit Message

Wayne Xia Oct. 14, 2013, 9:52 p.m. UTC
Some code in qcow2-snapshot.c directly access bs->file, so in those
points error can't be injected by other events. Since the code in
qcow2-snapshot.c is qcow2's internal detail similar as L1 table,
so add some debug events.

Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
---
 block/blkdebug.c       |    4 ++++
 block/qcow2-snapshot.c |    3 +++
 include/block/block.h  |    4 ++++
 3 files changed, 11 insertions(+), 0 deletions(-)

Comments

Max Reitz Nov. 2, 2013, 1:20 p.m. UTC | #1
On 14.10.2013 23:52, Wenchao Xia wrote:
> Some code in qcow2-snapshot.c directly access bs->file, so in those

s/access/accesses/

> points error can't be injected by other events. Since the code in

Perhaps "places" instead of "points"? (And s/error/errors/)

> qcow2-snapshot.c is qcow2's internal detail similar as L1 table,

Maybe something like "qcow2-snapshot.c is similar to the other qcow2
internal code (in regards to e.g. the L1 table)" would be easier to
parse, although I'm not sure whether it has the same meaning you wanted
to convey.

> so add some debug events.

Maybe remove the "so", because you already had a "since" in the previous
subordinate clause?

> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
> ---

Aside from that: Reviewed-by: Max Reitz <mreitz@redhat.com>
diff mbox

Patch

diff --git a/block/blkdebug.c b/block/blkdebug.c
index 16d2b91..3d5f7cf 100644
--- a/block/blkdebug.c
+++ b/block/blkdebug.c
@@ -186,6 +186,10 @@  static const char *event_names[BLKDBG_EVENT_MAX] = {
 
     [BLKDBG_FLUSH_TO_OS]                    = "flush_to_os",
     [BLKDBG_FLUSH_TO_DISK]                  = "flush_to_disk",
+
+    [BLKDBG_SNAPSHOT_L1_UPDATE]             = "snapshot_l1_update",
+    [BLKDBG_SNAPSHOT_LIST_UPDATE]           = "snapshot_list_update",
+    [BLKDBG_SNAPSHOT_HEADER_UPDATE]         = "snapshot_header_update",
 };
 
 static int get_event_by_name(const char *name, BlkDebugEvent *event)
diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index 6d0ffd4..4b313cc 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -210,6 +210,7 @@  static int qcow2_write_snapshots(BlockDriverState *bs, Error **errp)
     }
 
 
+    BLKDBG_EVENT(bs->file, BLKDBG_SNAPSHOT_LIST_UPDATE);
     /* Write all snapshots to the new list */
     for(i = 0; i < s->nb_snapshots; i++) {
         sn = s->snapshots + i;
@@ -296,6 +297,7 @@  static int qcow2_write_snapshots(BlockDriverState *bs, Error **errp)
     header_data.nb_snapshots        = cpu_to_be32(s->nb_snapshots);
     header_data.snapshots_offset    = cpu_to_be64(snapshots_offset);
 
+    BLKDBG_EVENT(bs->file, BLKDBG_SNAPSHOT_HEADER_UPDATE);
     ret = bdrv_pwrite_sync(bs->file, offsetof(QCowHeader, nb_snapshots),
                            &header_data, sizeof(header_data));
     if (ret < 0) {
@@ -457,6 +459,7 @@  void qcow2_snapshot_create(BlockDriverState *bs,
         goto dealloc_cluster;
     }
 
+    BLKDBG_EVENT(bs->file, BLKDBG_SNAPSHOT_L1_UPDATE);
     ret = bdrv_pwrite(bs->file, sn->l1_table_offset, l1_table,
                       s->l1_size * sizeof(uint64_t));
     if (ret < 0) {
diff --git a/include/block/block.h b/include/block/block.h
index 3560deb..cbccc3d 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -476,6 +476,10 @@  typedef enum {
     BLKDBG_FLUSH_TO_OS,
     BLKDBG_FLUSH_TO_DISK,
 
+    BLKDBG_SNAPSHOT_L1_UPDATE,
+    BLKDBG_SNAPSHOT_LIST_UPDATE,
+    BLKDBG_SNAPSHOT_HEADER_UPDATE,
+
     BLKDBG_EVENT_MAX,
 } BlkDebugEvent;