@@ -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)
@@ -209,6 +209,7 @@ static int qcow2_write_snapshots(BlockDriverState *bs,
}
+ 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;
@@ -305,6 +306,7 @@ static int qcow2_write_snapshots(BlockDriverState *bs,
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) {
@@ -475,6 +477,7 @@ void qcow2_snapshot_create(BlockDriverState *bs,
goto dealloc_l1_table;
}
+ 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) {
@@ -515,6 +515,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;