Re: [Qemu-devel] [PATCH 27/31] ram: Move last_req_rb to RAMState

2017-03-20 Thread Juan Quintela
"Dr. David Alan Gilbert"  wrote:
> * Juan Quintela (quint...@redhat.com) wrote:
>> It was on MigrationState when it is only used inside ram.c for
>> postcopy.  Problem is that we need to access it without being able to
>> pass it RAMState directly.
>> 
>> Signed-off-by: Juan Quintela 
>> ---
>>  include/migration/migration.h | 2 --
>>  migration/migration.c | 1 -
>>  migration/ram.c   | 6 --
>>  3 files changed, 4 insertions(+), 5 deletions(-)
>> 
>> diff --git a/include/migration/migration.h b/include/migration/migration.h
>> index 84cef4b..e032fb0 100644
>> --- a/include/migration/migration.h
>> +++ b/include/migration/migration.h
>> @@ -189,8 +189,6 @@ struct MigrationState
>>  /* Queue of outstanding page requests from the destination */
>>  QemuMutex src_page_req_mutex;
>>  QSIMPLEQ_HEAD(src_page_requests, MigrationSrcPageRequest) 
>> src_page_requests;
>> -/* The RAMBlock used in the last src_page_request */
>> -RAMBlock *last_req_rb;
>
> Should this be kept together with src_page_req_mutex and src_page_requests?

Yes.

But I still have to use the global variable.

Will do for next version.

Thanks, Juan.



Re: [Qemu-devel] [PATCH 27/31] ram: Move last_req_rb to RAMState

2017-03-17 Thread Dr. David Alan Gilbert
* Juan Quintela (quint...@redhat.com) wrote:
> It was on MigrationState when it is only used inside ram.c for
> postcopy.  Problem is that we need to access it without being able to
> pass it RAMState directly.
> 
> Signed-off-by: Juan Quintela 
> ---
>  include/migration/migration.h | 2 --
>  migration/migration.c | 1 -
>  migration/ram.c   | 6 --
>  3 files changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/include/migration/migration.h b/include/migration/migration.h
> index 84cef4b..e032fb0 100644
> --- a/include/migration/migration.h
> +++ b/include/migration/migration.h
> @@ -189,8 +189,6 @@ struct MigrationState
>  /* Queue of outstanding page requests from the destination */
>  QemuMutex src_page_req_mutex;
>  QSIMPLEQ_HEAD(src_page_requests, MigrationSrcPageRequest) 
> src_page_requests;
> -/* The RAMBlock used in the last src_page_request */
> -RAMBlock *last_req_rb;

Should this be kept together with src_page_req_mutex and src_page_requests?

Dave

>  /* The semaphore is used to notify COLO thread that failover is finished 
> */
>  QemuSemaphore colo_exit_sem;
>  
> diff --git a/migration/migration.c b/migration/migration.c
> index 46645b6..4f19382 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1114,7 +1114,6 @@ MigrationState *migrate_init(const MigrationParams 
> *params)
>  s->postcopy_after_devices = false;
>  s->postcopy_requests = 0;
>  s->migration_thread_running = false;
> -s->last_req_rb = NULL;
>  error_free(s->error);
>  s->error = NULL;
>  
> diff --git a/migration/ram.c b/migration/ram.c
> index e7db39c..50ca1da 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -197,6 +197,8 @@ struct RAMState {
>  QemuMutex bitmap_mutex;
>  /* Ram Bitmap protected by RCU */
>  RAMBitmap *ram_bitmap;
> +/* The RAMBlock used in the last src_page_request */
> +RAMBlock *last_req_rb;
>  };
>  typedef struct RAMState RAMState;
>  
> @@ -1190,7 +1192,7 @@ int ram_save_queue_pages(MigrationState *ms, const char 
> *rbname,
>  rcu_read_lock();
>  if (!rbname) {
>  /* Reuse last RAMBlock */
> -ramblock = ms->last_req_rb;
> +ramblock = ram_state.last_req_rb;
>  
>  if (!ramblock) {
>  /*
> @@ -1208,7 +1210,7 @@ int ram_save_queue_pages(MigrationState *ms, const char 
> *rbname,
>  error_report("ram_save_queue_pages no block '%s'", rbname);
>  goto err;
>  }
> -ms->last_req_rb = ramblock;
> +ram_state.last_req_rb = ramblock;
>  }
>  trace_ram_save_queue_pages(ramblock->idstr, start, len);
>  if (start+len > ramblock->used_length) {
> -- 
> 2.9.3
> 
--
Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK



[Qemu-devel] [PATCH 27/31] ram: Move last_req_rb to RAMState

2017-03-15 Thread Juan Quintela
It was on MigrationState when it is only used inside ram.c for
postcopy.  Problem is that we need to access it without being able to
pass it RAMState directly.

Signed-off-by: Juan Quintela 
---
 include/migration/migration.h | 2 --
 migration/migration.c | 1 -
 migration/ram.c   | 6 --
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/include/migration/migration.h b/include/migration/migration.h
index 84cef4b..e032fb0 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -189,8 +189,6 @@ struct MigrationState
 /* Queue of outstanding page requests from the destination */
 QemuMutex src_page_req_mutex;
 QSIMPLEQ_HEAD(src_page_requests, MigrationSrcPageRequest) 
src_page_requests;
-/* The RAMBlock used in the last src_page_request */
-RAMBlock *last_req_rb;
 /* The semaphore is used to notify COLO thread that failover is finished */
 QemuSemaphore colo_exit_sem;
 
diff --git a/migration/migration.c b/migration/migration.c
index 46645b6..4f19382 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1114,7 +1114,6 @@ MigrationState *migrate_init(const MigrationParams 
*params)
 s->postcopy_after_devices = false;
 s->postcopy_requests = 0;
 s->migration_thread_running = false;
-s->last_req_rb = NULL;
 error_free(s->error);
 s->error = NULL;
 
diff --git a/migration/ram.c b/migration/ram.c
index e7db39c..50ca1da 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -197,6 +197,8 @@ struct RAMState {
 QemuMutex bitmap_mutex;
 /* Ram Bitmap protected by RCU */
 RAMBitmap *ram_bitmap;
+/* The RAMBlock used in the last src_page_request */
+RAMBlock *last_req_rb;
 };
 typedef struct RAMState RAMState;
 
@@ -1190,7 +1192,7 @@ int ram_save_queue_pages(MigrationState *ms, const char 
*rbname,
 rcu_read_lock();
 if (!rbname) {
 /* Reuse last RAMBlock */
-ramblock = ms->last_req_rb;
+ramblock = ram_state.last_req_rb;
 
 if (!ramblock) {
 /*
@@ -1208,7 +1210,7 @@ int ram_save_queue_pages(MigrationState *ms, const char 
*rbname,
 error_report("ram_save_queue_pages no block '%s'", rbname);
 goto err;
 }
-ms->last_req_rb = ramblock;
+ram_state.last_req_rb = ramblock;
 }
 trace_ram_save_queue_pages(ramblock->idstr, start, len);
 if (start+len > ramblock->used_length) {
-- 
2.9.3