Re: [Qemu-devel] [PATCH 19/22] migration: convert current_migration from pointer to struct

2011-02-23 Thread Yoshiaki Tamura
2011/2/23 Juan Quintela quint...@redhat.com:
 This cleans up a lot the code as we don't have to check anymore if
 the variable is NULL or not.

 Signed-off-by: Juan Quintela quint...@redhat.com
 ---
  migration.c |  119 --
  1 files changed, 49 insertions(+), 70 deletions(-)

 diff --git a/migration.c b/migration.c
 index 4014330..7b1e679 100644
 --- a/migration.c
 +++ b/migration.c
 @@ -34,7 +34,9 @@
  /* Migration speed throttling */
  static int64_t max_throttle = (32  20);

 -static MigrationState *current_migration;
 +static MigrationState current_migration = {
 +    .state = MIG_STATE_NONE,
 +};

  static NotifierList migration_state_notifiers =
     NOTIFIER_LIST_INITIALIZER(migration_state_notifiers);
 @@ -135,37 +137,34 @@ void do_info_migrate(Monitor *mon, QObject **ret_data)
  {
     QDict *qdict;

 -    if (current_migration) {
 -
 -        switch (current_migration-state) {
 -        case MIG_STATE_NONE:
 -            /* no migration has happened ever */
 -            break;
 -        case MIG_STATE_ACTIVE:
 -            qdict = qdict_new();
 -            qdict_put(qdict, status, qstring_from_str(active));
 -
 -            migrate_put_status(qdict, ram, ram_bytes_transferred(),
 -                               ram_bytes_remaining(), ram_bytes_total());
 -
 -            if (blk_mig_active()) {
 -                migrate_put_status(qdict, disk, 
 blk_mig_bytes_transferred(),
 -                                   blk_mig_bytes_remaining(),
 -                                   blk_mig_bytes_total());
 -            }
 -
 -            *ret_data = QOBJECT(qdict);
 -            break;
 -        case MIG_STATE_COMPLETED:
 -            *ret_data = qobject_from_jsonf({ 'status': 'completed' });
 -            break;
 -        case MIG_STATE_ERROR:
 -            *ret_data = qobject_from_jsonf({ 'status': 'failed' });
 -            break;
 -        case MIG_STATE_CANCELLED:
 -            *ret_data = qobject_from_jsonf({ 'status': 'cancelled' });
 -            break;
 +    switch (current_migration.state) {
 +    case MIG_STATE_NONE:
 +        /* no migration has happened ever */
 +        break;
 +    case MIG_STATE_ACTIVE:
 +        qdict = qdict_new();
 +        qdict_put(qdict, status, qstring_from_str(active));
 +
 +        migrate_put_status(qdict, ram, ram_bytes_transferred(),
 +                           ram_bytes_remaining(), ram_bytes_total());
 +
 +        if (blk_mig_active()) {
 +            migrate_put_status(qdict, disk, blk_mig_bytes_transferred(),
 +                               blk_mig_bytes_remaining(),
 +                               blk_mig_bytes_total());
         }
 +
 +        *ret_data = QOBJECT(qdict);
 +        break;
 +    case MIG_STATE_COMPLETED:
 +        *ret_data = qobject_from_jsonf({ 'status': 'completed' });
 +        break;
 +    case MIG_STATE_ERROR:
 +        *ret_data = qobject_from_jsonf({ 'status': 'failed' });
 +        break;
 +    case MIG_STATE_CANCELLED:
 +        *ret_data = qobject_from_jsonf({ 'status': 'cancelled' });
 +        break;
     }
  }

 @@ -339,11 +338,7 @@ void remove_migration_state_change_notifier(Notifier 
 *notify)

  int get_migration_state(void)
  {
 -    if (current_migration) {
 -        return current_migration-state;
 -    } else {
 -        return MIG_STATE_ERROR;
 -    }
 +    return current_migration.state;
  }

  void migrate_fd_connect(MigrationState *s)
 @@ -369,27 +364,22 @@ void migrate_fd_connect(MigrationState *s)
     migrate_fd_put_ready(s);
  }

 -static MigrationState *migrate_create_state(Monitor *mon, int64_t 
 bandwidth_limit,
 -                                            int detach, int blk, int inc)
 +static void migrate_init_state(Monitor *mon, int64_t bandwidth_limit,
 +                               int detach, int blk, int inc)
  {
 -    MigrationState *s = qemu_mallocz(sizeof(*s));
 -
 -    s-blk = blk;
 -    s-shared = inc;
 -    s-mon = NULL;
 -    s-bandwidth_limit = bandwidth_limit;
 -    s-state = MIG_STATE_NONE;
 +    current_migration.blk = blk;
 +    current_migration.shared = inc;
 +    current_migration.mon = NULL;
 +    current_migration.bandwidth_limit = bandwidth_limit;
 +    current_migration.state = MIG_STATE_NONE;

     if (!detach) {
 -        migrate_fd_monitor_suspend(s, mon);
 +        migrate_fd_monitor_suspend(current_migration, mon);
     }
 -
 -    return s;
  }

  int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
  {
 -    MigrationState *s = NULL;
     const char *p;
     int detach = qdict_get_try_bool(qdict, detach, 0);
     int blk = qdict_get_try_bool(qdict, blk, 0);
 @@ -397,8 +387,7 @@ int do_migrate(Monitor *mon, const QDict *qdict, QObject 
 **ret_data)
     const char *uri = qdict_get_str(qdict, uri);
     int ret;

 -    if (current_migration 
 -        current_migration-state == MIG_STATE_ACTIVE) {
 +    if (current_migration.state == MIG_STATE_ACTIVE) {
         monitor_printf(mon, migration already 

[Qemu-devel] [PATCH 19/22] migration: convert current_migration from pointer to struct

2011-02-22 Thread Juan Quintela
This cleans up a lot the code as we don't have to check anymore if
the variable is NULL or not.

Signed-off-by: Juan Quintela quint...@redhat.com
---
 migration.c |  119 --
 1 files changed, 49 insertions(+), 70 deletions(-)

diff --git a/migration.c b/migration.c
index 4014330..7b1e679 100644
--- a/migration.c
+++ b/migration.c
@@ -34,7 +34,9 @@
 /* Migration speed throttling */
 static int64_t max_throttle = (32  20);

-static MigrationState *current_migration;
+static MigrationState current_migration = {
+.state = MIG_STATE_NONE,
+};

 static NotifierList migration_state_notifiers =
 NOTIFIER_LIST_INITIALIZER(migration_state_notifiers);
@@ -135,37 +137,34 @@ void do_info_migrate(Monitor *mon, QObject **ret_data)
 {
 QDict *qdict;

-if (current_migration) {
-
-switch (current_migration-state) {
-case MIG_STATE_NONE:
-/* no migration has happened ever */
-break;
-case MIG_STATE_ACTIVE:
-qdict = qdict_new();
-qdict_put(qdict, status, qstring_from_str(active));
-
-migrate_put_status(qdict, ram, ram_bytes_transferred(),
-   ram_bytes_remaining(), ram_bytes_total());
-
-if (blk_mig_active()) {
-migrate_put_status(qdict, disk, blk_mig_bytes_transferred(),
-   blk_mig_bytes_remaining(),
-   blk_mig_bytes_total());
-}
-
-*ret_data = QOBJECT(qdict);
-break;
-case MIG_STATE_COMPLETED:
-*ret_data = qobject_from_jsonf({ 'status': 'completed' });
-break;
-case MIG_STATE_ERROR:
-*ret_data = qobject_from_jsonf({ 'status': 'failed' });
-break;
-case MIG_STATE_CANCELLED:
-*ret_data = qobject_from_jsonf({ 'status': 'cancelled' });
-break;
+switch (current_migration.state) {
+case MIG_STATE_NONE:
+/* no migration has happened ever */
+break;
+case MIG_STATE_ACTIVE:
+qdict = qdict_new();
+qdict_put(qdict, status, qstring_from_str(active));
+
+migrate_put_status(qdict, ram, ram_bytes_transferred(),
+   ram_bytes_remaining(), ram_bytes_total());
+
+if (blk_mig_active()) {
+migrate_put_status(qdict, disk, blk_mig_bytes_transferred(),
+   blk_mig_bytes_remaining(),
+   blk_mig_bytes_total());
 }
+
+*ret_data = QOBJECT(qdict);
+break;
+case MIG_STATE_COMPLETED:
+*ret_data = qobject_from_jsonf({ 'status': 'completed' });
+break;
+case MIG_STATE_ERROR:
+*ret_data = qobject_from_jsonf({ 'status': 'failed' });
+break;
+case MIG_STATE_CANCELLED:
+*ret_data = qobject_from_jsonf({ 'status': 'cancelled' });
+break;
 }
 }

@@ -339,11 +338,7 @@ void remove_migration_state_change_notifier(Notifier 
*notify)

 int get_migration_state(void)
 {
-if (current_migration) {
-return current_migration-state;
-} else {
-return MIG_STATE_ERROR;
-}
+return current_migration.state;
 }

 void migrate_fd_connect(MigrationState *s)
@@ -369,27 +364,22 @@ void migrate_fd_connect(MigrationState *s)
 migrate_fd_put_ready(s);
 }

-static MigrationState *migrate_create_state(Monitor *mon, int64_t 
bandwidth_limit,
-int detach, int blk, int inc)
+static void migrate_init_state(Monitor *mon, int64_t bandwidth_limit,
+   int detach, int blk, int inc)
 {
-MigrationState *s = qemu_mallocz(sizeof(*s));
-
-s-blk = blk;
-s-shared = inc;
-s-mon = NULL;
-s-bandwidth_limit = bandwidth_limit;
-s-state = MIG_STATE_NONE;
+current_migration.blk = blk;
+current_migration.shared = inc;
+current_migration.mon = NULL;
+current_migration.bandwidth_limit = bandwidth_limit;
+current_migration.state = MIG_STATE_NONE;

 if (!detach) {
-migrate_fd_monitor_suspend(s, mon);
+migrate_fd_monitor_suspend(current_migration, mon);
 }
-
-return s;
 }

 int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
 {
-MigrationState *s = NULL;
 const char *p;
 int detach = qdict_get_try_bool(qdict, detach, 0);
 int blk = qdict_get_try_bool(qdict, blk, 0);
@@ -397,8 +387,7 @@ int do_migrate(Monitor *mon, const QDict *qdict, QObject 
**ret_data)
 const char *uri = qdict_get_str(qdict, uri);
 int ret;

-if (current_migration 
-current_migration-state == MIG_STATE_ACTIVE) {
+if (current_migration.state == MIG_STATE_ACTIVE) {
 monitor_printf(mon, migration already in progress\n);
 return -1;
 }
@@ -407,42 +396,35 @@ int do_migrate(Monitor *mon, const QDict *qdict, QObject 
**ret_data)
 return -1;
 }

-s =