qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: kvm@vger.kernel.org, "Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Juan Quintela" <quintela@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [PULL 10/17] migration: Make ram_save_target_page() a pointer
Date: Fri, 10 Feb 2023 00:34:19 +0100	[thread overview]
Message-ID: <20230209233426.37811-11-quintela@redhat.com> (raw)
In-Reply-To: <20230209233426.37811-1-quintela@redhat.com>

We are going to create a new function for multifd latest in the series.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 migration/ram.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index d108bf6951..ed5e0969f2 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -452,6 +452,13 @@ void dirty_sync_missed_zero_copy(void)
     ram_counters.dirty_sync_missed_zero_copy++;
 }
 
+struct MigrationOps {
+    int (*ram_save_target_page)(RAMState *rs, PageSearchStatus *pss);
+};
+typedef struct MigrationOps MigrationOps;
+
+MigrationOps *migration_ops;
+
 CompressionStats compression_counters;
 
 struct CompressParam {
@@ -2295,14 +2302,14 @@ static bool save_compress_page(RAMState *rs, PageSearchStatus *pss,
 }
 
 /**
- * ram_save_target_page: save one target page
+ * ram_save_target_page_legacy: save one target page
  *
  * Returns the number of pages written
  *
  * @rs: current RAM state
  * @pss: data about the page we want to send
  */
-static int ram_save_target_page(RAMState *rs, PageSearchStatus *pss)
+static int ram_save_target_page_legacy(RAMState *rs, PageSearchStatus *pss)
 {
     RAMBlock *block = pss->block;
     ram_addr_t offset = ((ram_addr_t)pss->page) << TARGET_PAGE_BITS;
@@ -2428,7 +2435,7 @@ static int ram_save_host_page_urgent(PageSearchStatus *pss)
 
         if (page_dirty) {
             /* Be strict to return code; it must be 1, or what else? */
-            if (ram_save_target_page(rs, pss) != 1) {
+            if (migration_ops->ram_save_target_page(rs, pss) != 1) {
                 error_report_once("%s: ram_save_target_page failed", __func__);
                 ret = -1;
                 goto out;
@@ -2497,7 +2504,7 @@ static int ram_save_host_page(RAMState *rs, PageSearchStatus *pss)
             if (preempt_active) {
                 qemu_mutex_unlock(&rs->bitmap_mutex);
             }
-            tmppages = ram_save_target_page(rs, pss);
+            tmppages = migration_ops->ram_save_target_page(rs, pss);
             if (tmppages >= 0) {
                 pages += tmppages;
                 /*
@@ -2697,6 +2704,8 @@ static void ram_save_cleanup(void *opaque)
     xbzrle_cleanup();
     compress_threads_save_cleanup();
     ram_state_cleanup(rsp);
+    g_free(migration_ops);
+    migration_ops = NULL;
 }
 
 static void ram_state_reset(RAMState *rs)
@@ -3252,6 +3261,8 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
     ram_control_before_iterate(f, RAM_CONTROL_SETUP);
     ram_control_after_iterate(f, RAM_CONTROL_SETUP);
 
+    migration_ops = g_malloc0(sizeof(MigrationOps));
+    migration_ops->ram_save_target_page = ram_save_target_page_legacy;
     ret =  multifd_send_sync_main(f);
     if (ret < 0) {
         return ret;
-- 
2.39.1



  parent reply	other threads:[~2023-02-09 23:35 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-09 23:34 [PULL 00/17] Migration 20230209 patches Juan Quintela
2023-02-09 23:34 ` [PULL 01/17] migration: Remove spurious files Juan Quintela
2023-02-09 23:34 ` [PULL 02/17] multifd: cleanup the function multifd_channel_connect Juan Quintela
2023-02-09 23:34 ` [PULL 03/17] multifd: Remove some redundant code Juan Quintela
2023-02-09 23:34 ` [PULL 04/17] linux-headers: Update to v6.1 Juan Quintela
2023-02-09 23:34 ` [PULL 05/17] util/userfaultfd: Support /dev/userfaultfd Juan Quintela
2023-02-09 23:34 ` [PULL 06/17] migration: Simplify ram_find_and_save_block() Juan Quintela
2023-02-09 23:34 ` [PULL 07/17] migration: Make find_dirty_block() return a single parameter Juan Quintela
2023-02-09 23:34 ` [PULL 08/17] migration: Split ram_bytes_total_common() in two functions Juan Quintela
2023-02-09 23:34 ` [PULL 09/17] migration: Calculate ram size once Juan Quintela
2023-02-09 23:34 ` Juan Quintela [this message]
2023-02-09 23:34 ` [PULL 11/17] migration: I messed state_pending_exact/estimate Juan Quintela
2023-02-09 23:34 ` [PULL 12/17] AVX512 support for xbzrle_encode_buffer Juan Quintela
2023-02-10  7:43   ` Thomas Huth
2023-02-09 23:34 ` [PULL 13/17] Update bench-code for addressing CI problem Juan Quintela
2023-02-09 23:34 ` [PULL 14/17] migration: Rework multi-channel checks on URI Juan Quintela
2023-02-09 23:34 ` [PULL 15/17] migration: Cleanup postcopy_preempt_setup() Juan Quintela
2023-02-09 23:34 ` [PULL 16/17] migration: Add a semaphore to count PONGs Juan Quintela
2023-02-09 23:34 ` [PULL 17/17] migration: Postpone postcopy preempt channel to be after main Juan Quintela
2023-02-10 13:36 ` [PULL 00/17] Migration 20230209 patches Peter Maydell
2023-02-10 14:21   ` Juan Quintela
2023-02-10 14:33     ` Peter Maydell
2023-02-10 16:13       ` Juan Quintela
2023-02-10 16:17         ` Peter Maydell

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=20230209233426.37811-11-quintela@redhat.com \
    --to=quintela@redhat.com \
    --cc=berrange@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=marcandre.lureau@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).