All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: David Hildenbrand <david@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	John Snow <jsnow@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	qemu-block@nongnu.org, Hailiang Zhang <zhanghailiang@xfusion.com>,
	Fam Zheng <fam@euphon.net>, "Michael S. Tsirkin" <mst@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Eric Blake <eblake@redhat.com>
Subject: [PATCH 03/43] migration: Create migration_cap_set()
Date: Thu,  2 Mar 2023 17:33:30 +0100	[thread overview]
Message-ID: <20230302163410.11399-4-quintela@redhat.com> (raw)
In-Reply-To: <20230302163410.11399-1-quintela@redhat.com>

And remove the convoluted use of qmp_migrate_set_capabilities() to
enable disable MIGRATION_CAPABILITY_BLOCK.

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/migration.c | 34 ++++++++++++++++------------------
 1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/migration/migration.c b/migration/migration.c
index 119027a656..e3062530f0 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1910,25 +1910,24 @@ void migrate_set_state(int *state, int old_state, int new_state)
     }
 }
 
-static MigrationCapabilityStatus *migrate_cap_add(MigrationCapability index,
-                                                  bool state)
+static bool migrate_cap_set(int cap, bool value, Error **errp)
 {
-    MigrationCapabilityStatus *cap;
+    MigrationState *s = migrate_get_current();
+    bool new_caps[MIGRATION_CAPABILITY__MAX];
 
-    cap = g_new0(MigrationCapabilityStatus, 1);
-    cap->capability = index;
-    cap->state = state;
+    if (migration_is_running(s->state)) {
+        error_setg(errp, QERR_MIGRATION_ACTIVE);
+        return false;
+    }
 
-    return cap;
-}
+    memcpy(new_caps, s->capabilities, sizeof(new_caps));
+    new_caps[cap] = value;
 
-void migrate_set_block_enabled(bool value, Error **errp)
-{
-    MigrationCapabilityStatusList *cap = NULL;
-
-    QAPI_LIST_PREPEND(cap, migrate_cap_add(MIGRATION_CAPABILITY_BLOCK, value));
-    qmp_migrate_set_capabilities(cap, errp);
-    qapi_free_MigrationCapabilityStatusList(cap);
+    if (!migrate_caps_check(s->capabilities, new_caps, errp)) {
+        return false;
+    }
+    s->capabilities[cap] = value;
+    return true;
 }
 
 static void migrate_set_block_incremental(MigrationState *s, bool value)
@@ -1940,7 +1939,7 @@ static void block_cleanup_parameters(MigrationState *s)
 {
     if (s->must_remove_block_options) {
         /* setting to false can never fail */
-        migrate_set_block_enabled(false, &error_abort);
+        migrate_cap_set(MIGRATION_CAPABILITY_BLOCK, false, &error_abort);
         migrate_set_block_incremental(s, false);
         s->must_remove_block_options = false;
     }
@@ -2427,8 +2426,7 @@ static bool migrate_prepare(MigrationState *s, bool blk, bool blk_inc,
                        "current migration capabilities");
             return false;
         }
-        migrate_set_block_enabled(true, &local_err);
-        if (local_err) {
+        if (!migrate_cap_set(MIGRATION_CAPABILITY_BLOCK, true, &local_err)) {
             error_propagate(errp, local_err);
             return false;
         }
-- 
2.39.2



  parent reply	other threads:[~2023-03-02 16:35 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-02 16:33 [PATCH 00/43] Migration: Create options.c for capabilities/params/properties Juan Quintela
2023-03-02 16:33 ` [PATCH 01/43] migration: rename enabled_capabilities to capabilities Juan Quintela
2023-03-06 14:27   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 02/43] migration: Pass migrate_caps_check() the old and new caps Juan Quintela
2023-03-06 14:40   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` Juan Quintela [this message]
2023-03-08 10:47   ` [PATCH 03/43] migration: Create migration_cap_set() Dr. David Alan Gilbert
2023-04-20 12:32     ` Juan Quintela
2023-03-02 16:33 ` [PATCH 04/43] migration: create options.c Juan Quintela
2023-03-08  9:46   ` Dr. David Alan Gilbert
2023-04-20 13:02     ` Juan Quintela
2023-03-02 16:33 ` [PATCH 05/43] migration: Move migrate_colo_enabled() to options.c Juan Quintela
2023-04-20 12:54   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 06/43] migration: Move migrate_use_compression() " Juan Quintela
2023-04-20 12:58   ` Vladimir Sementsov-Ogievskiy
2023-04-20 13:32     ` Juan Quintela
2023-03-02 16:33 ` [PATCH 07/43] migration: Move migrate_use_events() " Juan Quintela
2023-04-20 13:00   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 08/43] migration: Move migrate_use_multifd() " Juan Quintela
2023-04-20 13:01   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 09/43] migration: Move migrate_use_zero_copy_send() " Juan Quintela
2023-04-20 13:06   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 10/43] migration: Move migrate_use_xbzrle() " Juan Quintela
2023-04-20 13:07   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 11/43] migration: Move migrate_use_block() " Juan Quintela
2023-04-20 13:08   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 12/43] migration: Move migrate_use_return() " Juan Quintela
2023-04-20 13:09   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 13/43] migration: Create migrate_rdma_pin_all() function Juan Quintela
2023-04-20 13:12   ` Vladimir Sementsov-Ogievskiy
2023-03-02 16:33 ` [PATCH 14/43] migration: Move migrate_caps_check() to options.c Juan Quintela
2023-03-02 16:33 ` [PATCH 15/43] migration: Move qmp_query_migrate_capabilities() " Juan Quintela
2023-03-02 16:33 ` [PATCH 16/43] migration: Move qmp_migrate_set_capabilities() " Juan Quintela
2023-03-02 16:33 ` [PATCH 17/43] migration: Move migrate_cap_set() " Juan Quintela
2023-03-02 16:33 ` [PATCH 18/43] migration: Move parameters functions to option.c Juan Quintela
2023-03-02 16:33 ` [PATCH 19/43] migration: Use migrate_max_postcopy_bandwidth() Juan Quintela
2023-03-02 16:33 ` [PATCH 20/43] migration: Move migrate_use_block_incremental() to option.c Juan Quintela
2023-03-02 16:33 ` [PATCH 21/43] migration: Create migrate_throttle_trigger_threshold() Juan Quintela
2023-03-02 16:33 ` [PATCH 22/43] migration: Create migrate_checkpoint_delay() Juan Quintela
2023-03-02 16:33 ` [PATCH 23/43] migration: Create migrate_max_cpu_throttle() Juan Quintela
2023-03-02 16:33 ` [PATCH 24/43] migration: Move migrate_announce_params() to option.c Juan Quintela
2023-03-02 16:33 ` [PATCH 25/43] migration: Create migrate_cpu_throttle_initial() " Juan Quintela
2023-03-02 16:33 ` [PATCH 26/43] migration: Create migrate_cpu_throttle_increment() function Juan Quintela
2023-03-02 16:33 ` [PATCH 27/43] migration: Create migrate_cpu_throttle_tailslow() function Juan Quintela
2023-03-02 16:33 ` [PATCH 28/43] migration: Move migrate_use_tls() to options.c Juan Quintela
2023-03-02 16:33 ` [PATCH 29/43] migration: Move migrate_postcopy() " Juan Quintela
2023-03-02 16:33 ` [PATCH 30/43] migration: Create migrate_max_bandwidth() function Juan Quintela
2023-03-02 16:33 ` [PATCH 31/43] migration: Move qmp_query_migrate_parameters() to options.c Juan Quintela
2023-03-02 16:33 ` [PATCH 32/43] migration: Move qmp_migrate_set_parameters() " Juan Quintela
2023-03-02 16:34 ` [PATCH 33/43] migration: Create migrate_params_init() function Juan Quintela
2023-03-02 16:34 ` [PATCH 34/43] migration: Make all functions check have the same format Juan Quintela
2023-03-02 16:34 ` [PATCH 35/43] migration: Create migrate_downtime_limit() function Juan Quintela
2023-03-02 16:34 ` [PATCH 36/43] migration: Move migrate_set_block_incremental() to options.c Juan Quintela
2023-03-02 16:34 ` [PATCH 37/43] migration: Move block_cleanup_parameters() " Juan Quintela
2023-03-02 16:34 ` [PATCH 38/43] migration: Remove MigrationState from block_cleanup_parameters() Juan Quintela
2023-03-02 16:34 ` [PATCH 39/43] migration: Create migrate_tls_creds() function Juan Quintela
2023-03-02 16:34 ` [PATCH 40/43] migration: Create migrate_tls_authz() function Juan Quintela
2023-03-02 16:34 ` [PATCH 41/43] migration: Create migrate_tls_hostname() function Juan Quintela
2023-03-02 16:34 ` [PATCH 42/43] migration: Create migrate_block_bitmap_mapping() function Juan Quintela
2023-03-02 16:34 ` [PATCH 43/43] migration: Move migration_properties to options.c Juan Quintela
2023-03-06 14:29 ` [PATCH 00/43] Migration: Create options.c for capabilities/params/properties Vladimir Sementsov-Ogievskiy
2023-04-20 13:08   ` Juan Quintela

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230302163410.11399-4-quintela@redhat.com \
    --to=quintela@redhat.com \
    --cc=david@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=fam@euphon.net \
    --cc=jsnow@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@yandex-team.ru \
    --cc=zhanghailiang@xfusion.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.