All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, wrampazz@redhat.com, pavel.dovgalyuk@ispras.ru,
	ehabkost@redhat.com, alex.bennee@linaro.org, mtosatti@redhat.com,
	armbru@redhat.com, mreitz@redhat.com, stefanha@redhat.com,
	crosa@redhat.com, pbonzini@redhat.com, philmd@redhat.com,
	zhiwei_liu@c-sky.com, rth@twiddle.net
Subject: [PATCH v4 03/15] qcow2: introduce icount field for snapshots
Date: Mon, 14 Sep 2020 09:06:43 +0300	[thread overview]
Message-ID: <160006360339.31457.18121116124303431004.stgit@pasha-ThinkPad-X280> (raw)
In-Reply-To: <160006358590.31457.16757371597343007847.stgit@pasha-ThinkPad-X280>

From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>

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 <Pavel.Dovgalyuk@ispras.ru>
Acked-by: Kevin Wolf <kwolf@redhat.com>
---
 block/qcow2-snapshot.c |    7 +++++++
 block/qcow2.h          |    3 +++
 docs/interop/qcow2.txt |    5 +++++
 3 files changed, 15 insertions(+)

diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index 2756b37d24..d14e7be1aa 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -164,6 +164,12 @@ static int qcow2_do_read_snapshots(BlockDriverState *bs, bool repair,
             sn->disk_size = bs->total_sectors * BDRV_SECTOR_SIZE;
         }
 
+        if (sn->extra_data_size >= endof(QCowSnapshotExtraData, icount)) {
+            sn->icount = be64_to_cpu(extra.icount);
+        } else {
+            sn->icount = -1ULL;
+        }
+
         if (sn->extra_data_size > sizeof(extra)) {
             uint64_t extra_data_end;
             size_t unknown_extra_data_size;
@@ -333,6 +339,7 @@ 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 065ec3df0b..c39a1e1265 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -200,6 +200,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;
 
 
@@ -213,6 +214,8 @@ typedef struct QCowSnapshot {
     uint32_t date_sec;
     uint32_t date_nsec;
     uint64_t vm_clock_nsec;
+    /* icount value for the moment when snapshot was taken */
+    uint64_t icount;
     /* Size of all extra data, including QCowSnapshotExtraData if available */
     uint32_t extra_data_size;
     /* Data beyond QCowSnapshotExtraData, if any */
diff --git a/docs/interop/qcow2.txt b/docs/interop/qcow2.txt
index 7da0d81df8..0463f761ef 100644
--- a/docs/interop/qcow2.txt
+++ b/docs/interop/qcow2.txt
@@ -707,6 +707,11 @@ 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. Set to -1
+                                    if icount was disabled
+
                     Version 3 images must include extra data at least up to
                     byte 55.
 



  parent reply	other threads:[~2020-09-14  6:07 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-14  6:06 [PATCH v4 00/15] Reverse debugging Pavel Dovgalyuk
2020-09-14  6:06 ` [PATCH v4 01/15] replay: don't record interrupt poll Pavel Dovgalyuk
2020-09-14  6:06 ` [PATCH v4 02/15] replay: provide an accessor for rr filename Pavel Dovgalyuk
2020-09-14  6:06 ` Pavel Dovgalyuk [this message]
2020-09-14  6:06 ` [PATCH v4 04/15] migration: introduce icount field for snapshots Pavel Dovgalyuk
2020-09-14  6:06 ` [PATCH v4 05/15] qapi: introduce replay.json for record/replay-related stuff Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 06/15] replay: introduce info hmp/qmp command Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 07/15] replay: introduce breakpoint at the specified step Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 08/15] replay: implement replay-seek command Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 09/15] replay: flush rr queue before loading the vmstate Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 10/15] gdbstub: add reverse step support in replay mode Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 11/15] gdbstub: add reverse continue " Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 12/15] replay: describe reverse debugging in docs/replay.txt Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 13/15] docs: convert replay.txt to rst Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 14/15] replay: create temporary snapshot at debugger connection Pavel Dovgalyuk
2020-09-14  6:07 ` [PATCH v4 15/15] tests/acceptance: add reverse debugging test Pavel Dovgalyuk
2020-09-20  7:58 ` [PATCH v4 00/15] Reverse debugging Paolo Bonzini
2020-09-21  6:03   ` Pavel Dovgalyuk
2020-09-21  6:24     ` Pavel Dovgalyuk
2020-09-21  6:48   ` Pavel Dovgalyuk
2020-09-21  7:20     ` Philippe Mathieu-Daudé

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=160006360339.31457.18121116124303431004.stgit@pasha-ThinkPad-X280 \
    --to=pavel.dovgalyuk@ispras.ru \
    --cc=alex.bennee@linaro.org \
    --cc=armbru@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=stefanha@redhat.com \
    --cc=wrampazz@redhat.com \
    --cc=zhiwei_liu@c-sky.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.