[Qemu-devel] [PATCH v7 39/42] postcopy: Wire up loadvm_postcopy_handle_ commands

2015-06-16 Thread Dr. David Alan Gilbert (git)
From: "Dr. David Alan Gilbert" 

Wire up more of the handlers for the commands on the destination side,
in particular loadvm_postcopy_handle_run now has enough to start the
guest running.

Signed-off-by: Dr. David Alan Gilbert 
---
 migration/savevm.c | 29 -
 trace-events   |  2 ++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/migration/savevm.c b/migration/savevm.c
index 258c551..13dd6de 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1413,12 +1413,34 @@ static int 
loadvm_postcopy_handle_listen(MigrationIncomingState *mis)
 static int loadvm_postcopy_handle_run(MigrationIncomingState *mis)
 {
 PostcopyState ps = postcopy_state_set(mis, POSTCOPY_INCOMING_RUNNING);
+Error *local_err = NULL;
+
 trace_loadvm_postcopy_handle_run();
 if (ps != POSTCOPY_INCOMING_LISTENING) {
 error_report("CMD_POSTCOPY_RUN in wrong postcopy state (%d)", ps);
 return -1;
 }
 
+/* TODO we should move all of this lot into postcopy_ram.c or a shared code
+ * in migration.c
+ */
+cpu_synchronize_all_post_init();
+
+qemu_announce_self();
+
+/* Make sure all file formats flush their mutable metadata */
+bdrv_invalidate_cache_all(&local_err);
+if (local_err) {
+qerror_report_err(local_err);
+error_free(local_err);
+return -1;
+}
+
+trace_loadvm_postcopy_handle_run_cpu_sync();
+cpu_synchronize_all_post_init();
+
+trace_loadvm_postcopy_handle_run_vmstart();
+
 if (autostart) {
 /* Hold onto your hats, starting the CPU */
 vm_start();
@@ -1427,7 +1449,12 @@ static int 
loadvm_postcopy_handle_run(MigrationIncomingState *mis)
 runstate_set(RUN_STATE_PAUSED);
 }
 
-return 0;
+/* We need to finish reading the stream from the package
+ * and also stop reading anything more from the stream that loaded the
+ * package (since it's now being read by the listener thread).
+ * LOADVM_QUIT will quit all the layers of nested loadvm loops.
+ */
+return LOADVM_QUIT;
 }
 
 static int loadvm_process_command_simple_lencheck(const char *name,
diff --git a/trace-events b/trace-events
index a6c7839..6e9b32a 100644
--- a/trace-events
+++ b/trace-events
@@ -1194,6 +1194,8 @@ loadvm_handle_cmd_packaged_received(int ret) "%d"
 loadvm_postcopy_handle_advise(void) ""
 loadvm_postcopy_handle_listen(void) ""
 loadvm_postcopy_handle_run(void) ""
+loadvm_postcopy_handle_run_cpu_sync(void) ""
+loadvm_postcopy_handle_run_vmstart(void) ""
 loadvm_postcopy_ram_handle_discard(void) ""
 loadvm_postcopy_ram_handle_discard_end(void) ""
 loadvm_postcopy_ram_handle_discard_header(const char *ramid, uint16_t len) 
"%s: %ud"
-- 
2.4.3




Re: [Qemu-devel] [PATCH v7 39/42] postcopy: Wire up loadvm_postcopy_handle_ commands

2015-07-27 Thread Amit Shah
On (Tue) 16 Jun 2015 [11:26:52], Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" 
> 
> Wire up more of the handlers for the commands on the destination side,
> in particular loadvm_postcopy_handle_run now has enough to start the
> guest running.
> 
> Signed-off-by: Dr. David Alan Gilbert 

Reviewed-by: Amit Shah 

Amit



Re: [Qemu-devel] [PATCH v7 39/42] postcopy: Wire up loadvm_postcopy_handle_ commands

2015-07-14 Thread Juan Quintela
"Dr. David Alan Gilbert (git)"  wrote:
> From: "Dr. David Alan Gilbert" 
>
> Wire up more of the handlers for the commands on the destination side,
> in particular loadvm_postcopy_handle_run now has enough to start the
> guest running.
>
> Signed-off-by: Dr. David Alan Gilbert 

Reviewed-by: Juan Quintela 

As said before, I don't like the nested protocol handling.  But I have
no better suggestions at this time :p