From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52274) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9AYf-000100-C7 for qemu-devel@nongnu.org; Wed, 16 Dec 2015 06:47:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a9AYe-0006Mw-8o for qemu-devel@nongnu.org; Wed, 16 Dec 2015 06:47:49 -0500 Received: from mx1.redhat.com ([209.132.183.28]:56246) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9AYe-0006Mm-3g for qemu-devel@nongnu.org; Wed, 16 Dec 2015 06:47:48 -0500 From: "Dr. David Alan Gilbert (git)" Date: Wed, 16 Dec 2015 11:47:36 +0000 Message-Id: <1450266458-3178-5-git-send-email-dgilbert@redhat.com> In-Reply-To: <1450266458-3178-1-git-send-email-dgilbert@redhat.com> References: <1450266458-3178-1-git-send-email-dgilbert@redhat.com> Subject: [Qemu-devel] [PATCH v2 4/6] Migration: Emit event at start of pass List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, quintela@redhat.com, amit.shah@redhat.com Cc: jdenemar@redhat.com, liang.z.li@intel.com, zhang.zhanghailiang@huawei.com From: "Dr. David Alan Gilbert" Emit an event each time we sync the dirty bitmap on the source; this helps libvirt use postcopy by giving it a kick when it might be a good idea to start the postcopy. Signed-off-by: Dr. David Alan Gilbert --- docs/qmp-events.txt | 14 ++++++++++++++ migration/ram.c | 4 ++++ qapi/event.json | 13 +++++++++++++ 3 files changed, 31 insertions(+) diff --git a/docs/qmp-events.txt b/docs/qmp-events.txt index d2f1ce4..52eb7e2 100644 --- a/docs/qmp-events.txt +++ b/docs/qmp-events.txt @@ -496,6 +496,20 @@ Example: {"timestamp": {"seconds": 1432121972, "microseconds": 744001}, "event": "MIGRATION", "data": {"status": "completed"}} +MIGRATION_PASS +-------------- + +Emitted from the source side of a migration at the start of each pass +(when it syncs the dirty bitmap) + +Data: None. + + - "pass": An incrementing count (starting at 1 on the first pass) + +Example: +{"timestamp": {"seconds": 1449669631, "microseconds": 239225}, + "event": "MIGRATION_PASS", "data": {"pass": 2}} + STOP ---- diff --git a/migration/ram.c b/migration/ram.c index 0490f00..102d1f2 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -27,6 +27,7 @@ */ #include #include +#include "qapi-event.h" #include "qemu/bitops.h" #include "qemu/bitmap.h" #include "qemu/timer.h" @@ -682,6 +683,9 @@ static void migration_bitmap_sync(void) num_dirty_pages_period = 0; } s->dirty_sync_count = bitmap_sync_count; + if (migrate_use_events()) { + qapi_event_send_migration_pass(bitmap_sync_count, NULL); + } } /** diff --git a/qapi/event.json b/qapi/event.json index f0cef01..390fd45 100644 --- a/qapi/event.json +++ b/qapi/event.json @@ -255,6 +255,19 @@ 'data': {'status': 'MigrationStatus'}} ## +# @MIGRATION_PASS +# +# Emitted from the source side of a migration at the start of each pass +# (when it syncs the dirty bitmap) +# +# @pass: An incrementing count (starting at 1 on the first pass) +# +# Since: 2.6 +## +{ 'event': 'MIGRATION_PASS', + 'data': { 'pass': 'int' } } + +## # @ACPI_DEVICE_OST # # Emitted when guest executes ACPI _OST method. -- 2.5.0