Skip to contentSkip to conversation

replay: finish record/replay before closing the disks

PATCH Applied Pavel Dovgalyuk 2 participants 2 messages Mar 19, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 replay: finish record/replay before closing the disks

After recent updates block devices cannot be closed on qemu exit. This happens due to the block request polling when replay is not finished. Therefore now we stop execution recording before closing the block devices.

---
 replay/replay.c |    2 ++
 vl.c            |    1 +
 2 files changed, 3 insertions(+)
replay/replay.c +2 -0
index 8228261..58a986f 100644
@@ -366,6 +366,8 @@ void replay_finish(void)
     g_free(replay_snapshot);
     replay_snapshot = NULL;
 
+    replay_mode = REPLAY_MODE_NONE;
+
     replay_finish_events();
 }
 
vl.c +1 -0
index e8bebda..f4d9153 100644
@@ -4733,6 +4733,7 @@ int main(int argc, char **argv, char **envp)
 
     /* No more vcpu or device emulation activity beyond this point */
     vm_shutdown();
+    replay_finish();
 
     bdrv_close_all();
 
#1 lore raw
Quoted 29 lines · Pavel Dovgalyuk

After recent updates block devices cannot be closed on qemu exit. This happens due to the block request polling when replay is not finished. Therefore now we stop execution recording before closing the block devices.

---
 replay/replay.c |    2 ++
 vl.c            |    1 +
 2 files changed, 3 insertions(+)
replay/replay.c +2 -0
index 8228261..58a986f 100644
@@ -366,6 +366,8 @@ void replay_finish(void)
     g_free(replay_snapshot);
     replay_snapshot = NULL;
 
+    replay_mode = REPLAY_MODE_NONE;
+
     replay_finish_events();
 }
 
vl.c +0 -0
index e8bebda..f4d9153 100644

vl.c int main(int argc, char **argv, char **envp) · line 4739

Quoted 7 lines
vl.c +1 -0
@@ -4733,6 +4733,7 @@ int main(int argc, char **argv, char **envp)
 
     /* No more vcpu or device emulation activity beyond this point */
     vm_shutdown();
+    replay_finish();
 
     bdrv_close_all();
 

Queued, thanks.

Paolo