qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Denis Plotnikov <dplotnikov@virtuozzo.com>
To: dgilbert@redhat.com, quintela@redhat.com, pbonzini@redhat.com
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH v1 12/17] ram: add background snapshot support in ram page saving part of migration
Date: Wed, 18 Jul 2018 18:41:55 +0300	[thread overview]
Message-ID: <20180718154200.26777-13-dplotnikov@virtuozzo.com> (raw)
In-Reply-To: <20180718154200.26777-1-dplotnikov@virtuozzo.com>

Unify the function saving the ram pages for using in both the migration
and the background snapshots.

Signed-off-by: Denis Plotnikov <dplotnikov@virtuozzo.com>
---
 migration/ram.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/migration/ram.c b/migration/ram.c
index 10b6fdf23e..b1623e96e7 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1803,11 +1803,28 @@ static int ram_find_and_save_block(RAMState *rs, bool last_stage)
         if (!found) {
             /* priority queue empty, so just search for something dirty */
             found = find_dirty_block(rs, &pss, &again);
+
+            if (found && migrate_background_snapshot()) {
+                /* make a copy of the page and
+                 * pass it to the page search status */
+                int ret;
+                ret = ram_copy_page(pss.block, pss.page, &pss.page_copy);
+                if (ret == 0) {
+                    found = false;
+                    pages = 0;
+                } else if (ret < 0) {
+                    return ret;
+                }
+            }
         }
 
         if (found) {
             pages = ram_save_host_page(rs, &pss, last_stage);
         }
+
+        if (pss.page_copy) {
+            ram_page_buffer_decrease_used();
+        }
     } while (!pages && again);
 
     rs->last_seen_block = pss.block;
-- 
2.17.0

  parent reply	other threads:[~2018-07-18 15:42 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-18 15:41 [Qemu-devel] [PATCH v1 00/17] Background snapshots Denis Plotnikov
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 01/17] migration: add background snapshot capability Denis Plotnikov
2018-07-20  5:14   ` Peter Xu
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 02/17] bitops: add some atomic versions of bitmap operations Denis Plotnikov
2018-07-20  5:09   ` Peter Xu
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 03/17] threads: add infrastructure to process sigsegv Denis Plotnikov
2018-07-20  4:58   ` Peter Xu
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 04/17] background snapshot: make a dedicated type for ram block list Denis Plotnikov
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 05/17] ram: extend the data structures for background snapshotting Denis Plotnikov
2018-07-20  7:59   ` Peter Xu
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 06/17] background snapshot: add helpers to manage a copy of ram block list Denis Plotnikov
2018-07-20  7:57   ` Peter Xu
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 07/17] background snapshot: introduce page buffer Denis Plotnikov
2018-07-20  9:22   ` Peter Xu
2018-07-20 10:34   ` Paolo Bonzini
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 08/17] migration: add helpers to change VM memory protection rights Denis Plotnikov
2018-07-20 11:28   ` Dr. David Alan Gilbert
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 09/17] background snapshot: extend RAM request for holding a page copy pointer Denis Plotnikov
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 10/17] background snapshots: adapt the page queueing code for using page copies Denis Plotnikov
2018-07-20  8:39   ` Peter Xu
2018-07-20 11:46   ` Peter Xu
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 11/17] background snapshot: add a memory page copying function Denis Plotnikov
2018-07-18 15:41 ` Denis Plotnikov [this message]
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 13/17] background snapshot: add write-protected page access handler function Denis Plotnikov
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 14/17] kvm: add failed memeory access exit reason Denis Plotnikov
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 15/17] kvm: add vCPU failed memeory access processing Denis Plotnikov
2018-07-20  9:44   ` Peter Xu
2018-07-18 15:41 ` [Qemu-devel] [PATCH v1 16/17] migration: move the device state saving logic to a separate function Denis Plotnikov
2018-07-18 15:42 ` [Qemu-devel] [PATCH v1 17/17] background snapshot: enable background snapshot Denis Plotnikov
2018-07-20  9:27 ` [Qemu-devel] [PATCH v1 00/17] Background snapshots Peter Xu
2018-09-04 13:00   ` Denis Plotnikov
2018-09-05  3:32     ` Peter Xu
2018-09-05  9:18       ` Denis Plotnikov
2018-09-05  9:30         ` Peter Xu

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=20180718154200.26777-13-dplotnikov@virtuozzo.com \
    --to=dplotnikov@virtuozzo.com \
    --cc=dgilbert@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@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).