[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v14 07/25] qcow2: introduce icount field for snapsho
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [PATCH v14 07/25] qcow2: introduce icount field for snapshots |
Date: |
Fri, 15 Mar 2019 15:08:58 +0300 |
User-agent: |
StGit/0.17.1-dirty |
This patch introduces the icount field for saving within the snapshot.
It is required for navigation between the snapshots in record/replay mode.
Signed-off-by: Pavel Dovgalyuk <address@hidden>
Acked-by: Kevin Wolf <address@hidden>
--
v2:
- documented format changes in docs/interop/qcow2.txt
(suggested by Eric Blake)
v10:
- updated the documentation
---
block/qcow2-snapshot.c | 7 +++++++
block/qcow2.h | 2 ++
docs/interop/qcow2.txt | 4 ++++
3 files changed, 13 insertions(+)
diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index a6ffae89a6..52b535425a 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -103,6 +103,12 @@ int qcow2_read_snapshots(BlockDriverState *bs)
sn->disk_size = bs->total_sectors * BDRV_SECTOR_SIZE;
}
+ if (extra_data_size >= 24) {
+ sn->icount = be64_to_cpu(extra.icount);
+ } else {
+ sn->icount = -1ULL;
+ }
+
/* Read snapshot ID */
sn->id_str = g_malloc(id_str_size + 1);
ret = bdrv_pread(bs->file, offset, sn->id_str, id_str_size);
@@ -209,6 +215,7 @@ static int qcow2_write_snapshots(BlockDriverState *bs)
memset(&extra, 0, sizeof(extra));
extra.vm_state_size_large = cpu_to_be64(sn->vm_state_size);
extra.disk_size = cpu_to_be64(sn->disk_size);
+ extra.icount = cpu_to_be64(sn->icount);
id_str_size = strlen(sn->id_str);
name_size = strlen(sn->name);
diff --git a/block/qcow2.h b/block/qcow2.h
index fdee297f33..7838dcbcea 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -160,6 +160,7 @@ typedef struct QEMU_PACKED QCowSnapshotHeader {
typedef struct QEMU_PACKED QCowSnapshotExtraData {
uint64_t vm_state_size_large;
uint64_t disk_size;
+ uint64_t icount;
} QCowSnapshotExtraData;
@@ -173,6 +174,7 @@ typedef struct QCowSnapshot {
uint32_t date_sec;
uint32_t date_nsec;
uint64_t vm_clock_nsec;
+ uint64_t icount;
} QCowSnapshot;
struct Qcow2Cache;
diff --git a/docs/interop/qcow2.txt b/docs/interop/qcow2.txt
index af5711e533..aa9d447cda 100644
--- a/docs/interop/qcow2.txt
+++ b/docs/interop/qcow2.txt
@@ -584,6 +584,10 @@ Snapshot table entry:
Byte 48 - 55: Virtual disk size of the snapshot in bytes
+ Byte 56 - 63: icount value which corresponds to
+ the record/replay instruction count
+ when the snapshot was taken
+
Version 3 images must include extra data at least up to
byte 55.
- [Qemu-devel] [PATCH v14 19/25] replay: add BH oneshot event for block layer, (continued)
- [Qemu-devel] [PATCH v14 19/25] replay: add BH oneshot event for block layer, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 01/25] replay: add missing fix for internal function, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 24/25] replay: rename step-related variables and functions, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 03/25] replay: disable default snapshot for record/replay, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 17/25] gdbstub: add reverse continue support in replay mode, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 05/25] replay: don't drain/flush bdrv queue while RR is working, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 16/25] gdbstub: add reverse step support in replay mode, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 20/25] replay: init rtc after enabling the replay, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 02/25] block: implement bdrv_snapshot_goto for blkreplay, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 12/25] replay: introduce breakpoint at the specified step, Pavel Dovgalyuk, 2019/03/15
- [Qemu-devel] [PATCH v14 07/25] qcow2: introduce icount field for snapshots,
Pavel Dovgalyuk <=
- [Qemu-devel] [PATCH v14 08/25] migration: introduce icount field for snapshots, Pavel Dovgalyuk, 2019/03/15
- Re: [Qemu-devel] [PATCH v14 00/25] Fixing record/replay and adding reverse debugging, no-reply, 2019/03/15