From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: qemu-devel@nongnu.org, qemu-block@nongnu.org
Cc: pbonzini@redhat.com, armbru@redhat.com, eblake@redhat.com,
famz@redhat.com, stefanha@redhat.com, amit.shah@redhat.com,
quintela@redhat.com, mreitz@redhat.com, kwolf@redhat.com,
peter.maydell@linaro.org, dgilbert@redhat.com, den@openvz.org,
jsnow@redhat.com, vsementsov@virtuozzo.com, lirans@il.ibm.com
Subject: [Qemu-devel] [PATCH 01/18] migration: add has_postcopy savevm handler
Date: Tue, 16 Aug 2016 13:25:58 +0300 [thread overview]
Message-ID: <1471343175-14945-2-git-send-email-vsementsov@virtuozzo.com> (raw)
In-Reply-To: <1471343175-14945-1-git-send-email-vsementsov@virtuozzo.com>
Now postcopy-able states are recognized by not NULL
save_live_complete_postcopy handler. But when we have several different
postcopy-able states, it is not convenient. Ram postcopy may be
disabled, while some other postcopy enabled, in this case Ram state
should behave as it is not postcopy-able.
This patch add separate has_postcopy handler to specify behaviour of
savevm state.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
include/migration/vmstate.h | 1 +
migration/ram.c | 6 ++++++
migration/savevm.c | 6 ++++--
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index 1638ee5..5c30ef7 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -46,6 +46,7 @@ typedef struct SaveVMHandlers {
/* This runs both outside and inside the iothread lock. */
bool (*is_active)(void *opaque);
+ bool (*has_postcopy)(void *opaque);
/* This runs outside the iothread lock in the migration case, and
* within the lock in the savevm case. The callback had better only
diff --git a/migration/ram.c b/migration/ram.c
index 815bc0e..fa5c72b 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2578,10 +2578,16 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
return ret;
}
+static bool ram_has_postcopy(void *opaque)
+{
+ return migrate_postcopy_ram();
+}
+
static SaveVMHandlers savevm_ram_handlers = {
.save_live_setup = ram_save_setup,
.save_live_iterate = ram_save_iterate,
.save_live_complete_postcopy = ram_save_complete,
+ .has_postcopy = ram_has_postcopy,
.save_live_complete_precopy = ram_save_complete,
.save_live_pending = ram_save_pending,
.load_state = ram_load,
diff --git a/migration/savevm.c b/migration/savevm.c
index 33a2911..d2efeeb 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -940,7 +940,8 @@ int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy)
* call that's already run, it might get confused if we call
* iterate afterwards.
*/
- if (postcopy && !se->ops->save_live_complete_postcopy) {
+ if (postcopy &&
+ !(se->ops->has_postcopy && se->ops->has_postcopy(se->opaque))) {
continue;
}
if (qemu_file_rate_limit(f)) {
@@ -1028,7 +1029,8 @@ void qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only)
QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
if (!se->ops ||
- (in_postcopy && se->ops->save_live_complete_postcopy) ||
+ (in_postcopy && se->ops->has_postcopy &&
+ se->ops->has_postcopy(se->opaque)) ||
(in_postcopy && !iterable_only) ||
!se->ops->save_live_complete_precopy) {
continue;
--
1.8.3.1
next prev parent reply other threads:[~2016-08-16 10:26 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-16 10:25 [Qemu-devel] [PATCH 00/18] Dirty bitmaps postcopy migration Vladimir Sementsov-Ogievskiy
2016-08-16 10:25 ` Vladimir Sementsov-Ogievskiy [this message]
2016-11-04 12:32 ` [Qemu-devel] [PATCH 01/18] migration: add has_postcopy savevm handler Juan Quintela
2016-08-16 10:25 ` [Qemu-devel] [PATCH 02/18] migration: fix ram_save_pending Vladimir Sementsov-Ogievskiy
2016-08-17 12:12 ` Dr. David Alan Gilbert
2016-11-04 12:32 ` Juan Quintela
2016-08-16 10:26 ` [Qemu-devel] [PATCH 03/18] migration: split common postcopy out of ram postcopy Vladimir Sementsov-Ogievskiy
2016-11-04 12:49 ` Juan Quintela
2016-08-16 10:26 ` [Qemu-devel] [PATCH 04/18] migration: introduce postcopy-only pending Vladimir Sementsov-Ogievskiy
2016-11-04 12:46 ` Juan Quintela
2016-11-21 11:05 ` Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 05/18] block: add bdrv_next_dirty_bitmap() Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 06/18] block: add bdrv_dirty_bitmap_enable_successor() Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 07/18] qapi: add dirty-bitmaps migration capability Vladimir Sementsov-Ogievskiy
2016-08-17 9:06 ` Fam Zheng
2016-08-16 10:26 ` [Qemu-devel] [PATCH 08/18] block/dirty-bitmap: add bdrv_dirty_bitmap_release_successor Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 09/18] migration: include migrate_dirty_bitmaps in migrate_postcopy Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 10/18] migration/qemu-file: add qemu_put_counted_string() Vladimir Sementsov-Ogievskiy
2016-08-17 9:09 ` Fam Zheng
2016-11-21 5:23 ` Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 11/18] migration: add is_active_iterate handler Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 12/18] migration: add postcopy migration of dirty bitmaps Vladimir Sementsov-Ogievskiy
2016-11-04 13:09 ` Juan Quintela
2016-11-21 6:35 ` Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 13/18] iotests: maintain several vms in test Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 14/18] iotests: add add_incoming_migration to VM class Vladimir Sementsov-Ogievskiy
2016-08-16 10:26 ` [Qemu-devel] [PATCH 15/18] qapi: add md5 checksum of last dirty bitmap level to query-block Vladimir Sementsov-Ogievskiy
2016-08-16 10:37 ` Daniel P. Berrange
2016-08-16 10:42 ` Daniel P. Berrange
2016-08-16 10:26 ` [Qemu-devel] [PATCH 16/18] iotests: add default node-name Vladimir Sementsov-Ogievskiy
2016-08-17 9:19 ` Fam Zheng
2016-08-16 10:26 ` [Qemu-devel] [PATCH 17/18] iotests: add dirty bitmap migration test 169 Vladimir Sementsov-Ogievskiy
2016-08-17 11:35 ` Fam Zheng
2016-08-16 10:26 ` [Qemu-devel] [PATCH 18/18] iotests: add dirty bitmap postcopy test Vladimir Sementsov-Ogievskiy
2016-08-17 11:47 ` [Qemu-devel] [PATCH 00/18] Dirty bitmaps postcopy migration Fam Zheng
2016-08-17 12:15 ` Vladimir Sementsov-Ogievskiy
2016-08-20 11:21 ` Fam Zheng
2016-08-17 12:35 ` Dr. David Alan Gilbert
2016-08-17 13:54 ` Vladimir Sementsov-Ogievskiy
2016-09-30 11:00 ` Vladimir Sementsov-Ogievskiy
2016-10-12 11:32 ` Vladimir Sementsov-Ogievskiy
2016-10-25 13:04 ` [Qemu-devel] ping " Vladimir Sementsov-Ogievskiy
2016-11-02 11:13 ` Stefan Hajnoczi
2016-11-02 12:05 ` Denis V. Lunev
2016-11-04 13:12 ` Juan Quintela
2016-11-04 13:27 ` Denis V. Lunev
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=1471343175-14945-2-git-send-email-vsementsov@virtuozzo.com \
--to=vsementsov@virtuozzo.com \
--cc=amit.shah@redhat.com \
--cc=armbru@redhat.com \
--cc=den@openvz.org \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=famz@redhat.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=lirans@il.ibm.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@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 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.