diff mbox

[v4,2/6] Migration: Split out ram part of qmp_query_migrate

Message ID 1463489755-30703-3-git-send-email-dgilbert@redhat.com
State New
Headers show

Commit Message

Dr. David Alan Gilbert May 17, 2016, 12:55 p.m. UTC
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

The RAM section of qmp_query_migrate is reasonably complex
and repeated 3 times.  Split it out into a helper.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviwed-by: Denis V. Lunev <den@openvz.org>
---
 migration/migration.c | 57 ++++++++++++++++++++-------------------------------
 1 file changed, 22 insertions(+), 35 deletions(-)

Comments

Amit Shah May 23, 2016, 7:02 a.m. UTC | #1
On (Tue) 17 May 2016 [13:55:51], Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> The RAM section of qmp_query_migrate is reasonably complex
> and repeated 3 times.  Split it out into a helper.
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
> Reviwed-by: Denis V. Lunev <den@openvz.org>
> ---
>  migration/migration.c | 57 ++++++++++++++++++++-------------------------------
>  1 file changed, 22 insertions(+), 35 deletions(-)
> 
> diff --git a/migration/migration.c b/migration/migration.c
> index 991313a..bfb326d 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -561,6 +561,25 @@ static void get_xbzrle_cache_stats(MigrationInfo *info)
>      }
>  }
>  
> +static void populate_ram_info(MigrationInfo *info, MigrationState *s)
> +{
> +    info->has_ram = true;
> +    info->ram = g_malloc0(sizeof(*info->ram));
> +    info->ram->transferred = ram_bytes_transferred();
> +    info->ram->total = ram_bytes_total();
> +    info->ram->duplicate = dup_mig_pages_transferred();
> +    info->ram->skipped = skipped_mig_pages_transferred();
> +    info->ram->normal = norm_mig_pages_transferred();
> +    info->ram->normal_bytes = norm_mig_bytes_transferred();
> +    info->ram->mbps = s->mbps;
> +    info->ram->dirty_sync_count = s->dirty_sync_count;
> +
> +    if (s->state != MIGRATION_STATUS_COMPLETED) {
> +        info->ram->remaining = ram_bytes_remaining();
> +        info->ram->dirty_pages_rate = s->dirty_pages_rate;

In the 'else' case, shouldn't these be set to 0?

		Amit
Dr. David Alan Gilbert May 31, 2016, 4:10 p.m. UTC | #2
* Amit Shah (amit.shah@redhat.com) wrote:
> On (Tue) 17 May 2016 [13:55:51], Dr. David Alan Gilbert (git) wrote:
> > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> > 
> > The RAM section of qmp_query_migrate is reasonably complex
> > and repeated 3 times.  Split it out into a helper.
> > 
> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > Reviewed-by: Eric Blake <eblake@redhat.com>
> > Reviwed-by: Denis V. Lunev <den@openvz.org>
> > ---
> >  migration/migration.c | 57 ++++++++++++++++++++-------------------------------
> >  1 file changed, 22 insertions(+), 35 deletions(-)
> > 
> > diff --git a/migration/migration.c b/migration/migration.c
> > index 991313a..bfb326d 100644
> > --- a/migration/migration.c
> > +++ b/migration/migration.c
> > @@ -561,6 +561,25 @@ static void get_xbzrle_cache_stats(MigrationInfo *info)
> >      }
> >  }
> >  
> > +static void populate_ram_info(MigrationInfo *info, MigrationState *s)
> > +{
> > +    info->has_ram = true;
> > +    info->ram = g_malloc0(sizeof(*info->ram));
> > +    info->ram->transferred = ram_bytes_transferred();
> > +    info->ram->total = ram_bytes_total();
> > +    info->ram->duplicate = dup_mig_pages_transferred();
> > +    info->ram->skipped = skipped_mig_pages_transferred();
> > +    info->ram->normal = norm_mig_pages_transferred();
> > +    info->ram->normal_bytes = norm_mig_bytes_transferred();
> > +    info->ram->mbps = s->mbps;
> > +    info->ram->dirty_sync_count = s->dirty_sync_count;
> > +
> > +    if (s->state != MIGRATION_STATUS_COMPLETED) {
> > +        info->ram->remaining = ram_bytes_remaining();
> > +        info->ram->dirty_pages_rate = s->dirty_pages_rate;
> 
> In the 'else' case, shouldn't these be set to 0?

There's no need to, see that the info->ram is allocated a few
lines above using a g_malloc0 and so it's already all zero.

Dave

> 
> 		Amit
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
Amit Shah June 1, 2016, 3:48 a.m. UTC | #3
On (Tue) 31 May 2016 [17:10:48], Dr. David Alan Gilbert wrote:
> * Amit Shah (amit.shah@redhat.com) wrote:
> > On (Tue) 17 May 2016 [13:55:51], Dr. David Alan Gilbert (git) wrote:
> > > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> > > 
> > > The RAM section of qmp_query_migrate is reasonably complex
> > > and repeated 3 times.  Split it out into a helper.
> > > 
> > > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > > Reviewed-by: Eric Blake <eblake@redhat.com>
> > > Reviwed-by: Denis V. Lunev <den@openvz.org>
> > > ---
> > >  migration/migration.c | 57 ++++++++++++++++++++-------------------------------
> > >  1 file changed, 22 insertions(+), 35 deletions(-)
> > > 
> > > diff --git a/migration/migration.c b/migration/migration.c
> > > index 991313a..bfb326d 100644
> > > --- a/migration/migration.c
> > > +++ b/migration/migration.c
> > > @@ -561,6 +561,25 @@ static void get_xbzrle_cache_stats(MigrationInfo *info)
> > >      }
> > >  }
> > >  
> > > +static void populate_ram_info(MigrationInfo *info, MigrationState *s)
> > > +{
> > > +    info->has_ram = true;
> > > +    info->ram = g_malloc0(sizeof(*info->ram));
> > > +    info->ram->transferred = ram_bytes_transferred();
> > > +    info->ram->total = ram_bytes_total();
> > > +    info->ram->duplicate = dup_mig_pages_transferred();
> > > +    info->ram->skipped = skipped_mig_pages_transferred();
> > > +    info->ram->normal = norm_mig_pages_transferred();
> > > +    info->ram->normal_bytes = norm_mig_bytes_transferred();
> > > +    info->ram->mbps = s->mbps;
> > > +    info->ram->dirty_sync_count = s->dirty_sync_count;
> > > +
> > > +    if (s->state != MIGRATION_STATUS_COMPLETED) {
> > > +        info->ram->remaining = ram_bytes_remaining();
> > > +        info->ram->dirty_pages_rate = s->dirty_pages_rate;
> > 
> > In the 'else' case, shouldn't these be set to 0?
> 
> There's no need to, see that the info->ram is allocated a few
> lines above using a g_malloc0 and so it's already all zero.

Ah, yeah :(

One of the side-effects of using gmalloc0 is valgrind (or compiler
warnings) won't be helpful when using stuff without writing to them
first.  That's why I prefer explicitly setting fields.

Anyway, I'll pick this series up, thanks!

		Amit
diff mbox

Patch

diff --git a/migration/migration.c b/migration/migration.c
index 991313a..bfb326d 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -561,6 +561,25 @@  static void get_xbzrle_cache_stats(MigrationInfo *info)
     }
 }
 
+static void populate_ram_info(MigrationInfo *info, MigrationState *s)
+{
+    info->has_ram = true;
+    info->ram = g_malloc0(sizeof(*info->ram));
+    info->ram->transferred = ram_bytes_transferred();
+    info->ram->total = ram_bytes_total();
+    info->ram->duplicate = dup_mig_pages_transferred();
+    info->ram->skipped = skipped_mig_pages_transferred();
+    info->ram->normal = norm_mig_pages_transferred();
+    info->ram->normal_bytes = norm_mig_bytes_transferred();
+    info->ram->mbps = s->mbps;
+    info->ram->dirty_sync_count = s->dirty_sync_count;
+
+    if (s->state != MIGRATION_STATUS_COMPLETED) {
+        info->ram->remaining = ram_bytes_remaining();
+        info->ram->dirty_pages_rate = s->dirty_pages_rate;
+    }
+}
+
 MigrationInfo *qmp_query_migrate(Error **errp)
 {
     MigrationInfo *info = g_malloc0(sizeof(*info));
@@ -585,18 +604,7 @@  MigrationInfo *qmp_query_migrate(Error **errp)
         info->has_setup_time = true;
         info->setup_time = s->setup_time;
 
-        info->has_ram = true;
-        info->ram = g_malloc0(sizeof(*info->ram));
-        info->ram->transferred = ram_bytes_transferred();
-        info->ram->remaining = ram_bytes_remaining();
-        info->ram->total = ram_bytes_total();
-        info->ram->duplicate = dup_mig_pages_transferred();
-        info->ram->skipped = skipped_mig_pages_transferred();
-        info->ram->normal = norm_mig_pages_transferred();
-        info->ram->normal_bytes = norm_mig_bytes_transferred();
-        info->ram->dirty_pages_rate = s->dirty_pages_rate;
-        info->ram->mbps = s->mbps;
-        info->ram->dirty_sync_count = s->dirty_sync_count;
+        populate_ram_info(info, s);
 
         if (blk_mig_active()) {
             info->has_disk = true;
@@ -624,18 +632,7 @@  MigrationInfo *qmp_query_migrate(Error **errp)
         info->has_setup_time = true;
         info->setup_time = s->setup_time;
 
-        info->has_ram = true;
-        info->ram = g_malloc0(sizeof(*info->ram));
-        info->ram->transferred = ram_bytes_transferred();
-        info->ram->remaining = ram_bytes_remaining();
-        info->ram->total = ram_bytes_total();
-        info->ram->duplicate = dup_mig_pages_transferred();
-        info->ram->skipped = skipped_mig_pages_transferred();
-        info->ram->normal = norm_mig_pages_transferred();
-        info->ram->normal_bytes = norm_mig_bytes_transferred();
-        info->ram->dirty_pages_rate = s->dirty_pages_rate;
-        info->ram->mbps = s->mbps;
-        info->ram->dirty_sync_count = s->dirty_sync_count;
+        populate_ram_info(info, s);
 
         if (blk_mig_active()) {
             info->has_disk = true;
@@ -658,17 +655,7 @@  MigrationInfo *qmp_query_migrate(Error **errp)
         info->has_setup_time = true;
         info->setup_time = s->setup_time;
 
-        info->has_ram = true;
-        info->ram = g_malloc0(sizeof(*info->ram));
-        info->ram->transferred = ram_bytes_transferred();
-        info->ram->remaining = 0;
-        info->ram->total = ram_bytes_total();
-        info->ram->duplicate = dup_mig_pages_transferred();
-        info->ram->skipped = skipped_mig_pages_transferred();
-        info->ram->normal = norm_mig_pages_transferred();
-        info->ram->normal_bytes = norm_mig_bytes_transferred();
-        info->ram->mbps = s->mbps;
-        info->ram->dirty_sync_count = s->dirty_sync_count;
+        populate_ram_info(info, s);
         break;
     case MIGRATION_STATUS_FAILED:
         info->has_status = true;