[{"id":1772652,"web_url":"http://patchwork.ozlabs.org/comment/1772652/","msgid":"<20170921101608.GA2717@work-vm>","list_archive_url":null,"date":"2017-09-21T10:16:09","subject":"Re: [Qemu-devel] [PATCH v10 06/10] migration: add postcopy\n\tblocktime ctx into MigrationIncomingState","submitter":{"id":48102,"url":"http://patchwork.ozlabs.org/api/people/48102/","name":"Dr. David Alan Gilbert","email":"dgilbert@redhat.com"},"content":"* Alexey Perevalov (a.perevalov@samsung.com) wrote:\n> This patch adds request to kernel space for UFFD_FEATURE_THREAD_ID,\n> in case when this feature is provided by kernel.\n> \n> PostcopyBlocktimeContext is incapsulated inside postcopy-ram.c,\n> due to it's postcopy only feature.\n> Also it defines PostcopyBlocktimeContext's instance live time.\n> Information from PostcopyBlocktimeContext instance will be provided\n> much after postcopy migration end, instance of PostcopyBlocktimeContext\n> will live till QEMU exit, but part of it (vcpu_addr,\n> page_fault_vcpu_time) used only during calculation, will be released\n> when postcopy ended or failed.\n> \n> To enable postcopy blocktime calculation on destination, need to request\n> proper capabiltiy (Patch for documentation will be at the tail of the patch\n> set).\n> \n> As an example following command enable that capability, assume QEMU was\n> started with\n> -chardev socket,id=charmonitor,path=/var/lib/migrate-vm-monitor.sock\n> option to control it\n> \n> [root@host]#printf \"{\\\"execute\\\" : \\\"qmp_capabilities\\\"}\\r\\n \\\n> {\\\"execute\\\": \\\"migrate-set-capabilities\\\" , \\\"arguments\\\":   {\n> \\\"capabilities\\\": [ { \\\"capability\\\": \\\"postcopy-blocktime\\\", \\\"state\\\":\n> true } ] } }\" | nc -U /var/lib/migrate-vm-monitor.sock\n> \n> Or just with HMP\n> (qemu) migrate_set_capability postcopy-blocktime on\n> \n> Signed-off-by: Alexey Perevalov <a.perevalov@samsung.com>\n> ---\n>  migration/migration.h    |  8 ++++++\n>  migration/postcopy-ram.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++\n>  2 files changed, 73 insertions(+)\n> \n> diff --git a/migration/migration.h b/migration/migration.h\n> index 56bf33c..770466b 100644\n> --- a/migration/migration.h\n> +++ b/migration/migration.h\n> @@ -21,6 +21,8 @@\n>  #include \"qemu/coroutine_int.h\"\n>  #include \"hw/qdev.h\"\n>  \n> +struct PostcopyBlocktimeContext;\n> +\n>  /* State for the incoming migration */\n>  struct MigrationIncomingState {\n>      QEMUFile *from_src_file;\n> @@ -58,6 +60,12 @@ struct MigrationIncomingState {\n>      /* The coroutine we should enter (back) after failover */\n>      Coroutine *migration_incoming_co;\n>      QemuSemaphore colo_incoming_sem;\n> +\n> +    /*\n> +     * PostcopyBlocktimeContext to keep information for postcopy\n> +     * live migration, to calculate vCPU block time\n> +     * */\n> +    struct PostcopyBlocktimeContext *blocktime_ctx;\n>  };\n>  \n>  MigrationIncomingState *migration_incoming_get_current(void);\n> diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c\n> index bec6c2c..cc78981 100644\n> --- a/migration/postcopy-ram.c\n> +++ b/migration/postcopy-ram.c\n> @@ -61,6 +61,58 @@ struct PostcopyDiscardState {\n>  #include <sys/eventfd.h>\n>  #include <linux/userfaultfd.h>\n>  \n> +typedef struct PostcopyBlocktimeContext {\n> +    /* time when page fault initiated per vCPU */\n> +    int64_t *page_fault_vcpu_time;\n> +    /* page address per vCPU */\n> +    uint64_t *vcpu_addr;\n> +    int64_t total_blocktime;\n> +    /* blocktime per vCPU */\n> +    int64_t *vcpu_blocktime;\n> +    /* point in time when last page fault was initiated */\n> +    int64_t last_begin;\n> +    /* number of vCPU are suspended */\n> +    int smp_cpus_down;\n> +\n> +    /*\n> +     * Handler for exit event, necessary for\n> +     * releasing whole blocktime_ctx\n> +     */\n> +    Notifier exit_notifier;\n> +    /*\n> +     * Handler for postcopy event, necessary for\n> +     * releasing unnecessary part of blocktime_ctx\n> +     */\n> +    Notifier postcopy_notifier;\n\nIs this actually used? It's just that...\n\n> +} PostcopyBlocktimeContext;\n> +\n> +static void destroy_blocktime_context(struct PostcopyBlocktimeContext *ctx)\n> +{\n> +    g_free(ctx->page_fault_vcpu_time);\n> +    g_free(ctx->vcpu_addr);\n> +    g_free(ctx->vcpu_blocktime);\n> +    g_free(ctx);\n> +}\n> +\n> +static void migration_exit_cb(Notifier *n, void *data)\n> +{\n> +    PostcopyBlocktimeContext *ctx = container_of(n, PostcopyBlocktimeContext,\n> +                                                 exit_notifier);\n> +    destroy_blocktime_context(ctx);\n> +}\n> +\n> +static struct PostcopyBlocktimeContext *blocktime_context_new(void)\n> +{\n> +    PostcopyBlocktimeContext *ctx = g_new0(PostcopyBlocktimeContext, 1);\n> +    ctx->page_fault_vcpu_time = g_new0(int64_t, smp_cpus);\n> +    ctx->vcpu_addr = g_new0(uint64_t, smp_cpus);\n> +    ctx->vcpu_blocktime = g_new0(int64_t, smp_cpus);\n> +\n> +    ctx->exit_notifier.notify = migration_exit_cb;\n> +    qemu_add_exit_notifier(&ctx->exit_notifier);\n> +    add_migration_state_change_notifier(&ctx->postcopy_notifier);\n\nPatch 7 removes that line, and I don't see what puts it back;\nand this line doesn't actually set up ctx->postcopy_notifier.\n\nOther than that, it looks OK.\n\nDave\n\n> +    return ctx;\n> +}\n>  \n>  /**\n>   * receive_ufd_features: check userfault fd features, to request only supported\n> @@ -153,6 +205,19 @@ static bool ufd_check_and_apply(int ufd, MigrationIncomingState *mis)\n>          }\n>      }\n>  \n> +#ifdef UFFD_FEATURE_THREAD_ID\n> +    if (migrate_postcopy_blocktime() && mis &&\n> +        UFFD_FEATURE_THREAD_ID & supported_features) {\n> +        /* kernel supports that feature */\n> +        /* don't create blocktime_context if it exists */\n> +        if (!mis->blocktime_ctx) {\n> +            mis->blocktime_ctx = blocktime_context_new();\n> +        }\n> +\n> +        asked_features |= UFFD_FEATURE_THREAD_ID;\n> +    }\n> +#endif\n> +\n>      /*\n>       * request features, even if asked_features is 0, due to\n>       * kernel expects UFFD_API before UFFDIO_REGISTER, per\n> -- \n> 1.9.1\n> \n--\nDr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx02.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx02.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=dgilbert@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xyXb643dZz9t49\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 21 Sep 2017 20:16:50 +1000 (AEST)","from localhost ([::1]:52749 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1duyXI-0005ji-Lw\n\tfor incoming@patchwork.ozlabs.org; Thu, 21 Sep 2017 06:16:48 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:41782)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <dgilbert@redhat.com>) id 1duyWr-0005j8-Gl\n\tfor qemu-devel@nongnu.org; Thu, 21 Sep 2017 06:16:26 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <dgilbert@redhat.com>) id 1duyWm-0007pT-Nl\n\tfor qemu-devel@nongnu.org; Thu, 21 Sep 2017 06:16:21 -0400","from mx1.redhat.com ([209.132.183.28]:45806)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <dgilbert@redhat.com>) id 1duyWm-0007nc-Dt\n\tfor qemu-devel@nongnu.org; Thu, 21 Sep 2017 06:16:16 -0400","from smtp.corp.redhat.com\n\t(int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 39881806AC;\n\tThu, 21 Sep 2017 10:16:15 +0000 (UTC)","from work-vm (ovpn-117-186.ams2.redhat.com [10.36.117.186])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id A333F5EDF8;\n\tThu, 21 Sep 2017 10:16:11 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 39881806AC","Date":"Thu, 21 Sep 2017 11:16:09 +0100","From":"\"Dr. David Alan Gilbert\" <dgilbert@redhat.com>","To":"Alexey Perevalov <a.perevalov@samsung.com>","Message-ID":"<20170921101608.GA2717@work-vm>","References":"<1505839684-10046-1-git-send-email-a.perevalov@samsung.com>\n\t<CGME20170919164824eucas1p23607e53e3ea38f8be4e885bb960e803f@eucas1p2.samsung.com>\n\t<1505839684-10046-7-git-send-email-a.perevalov@samsung.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<1505839684-10046-7-git-send-email-a.perevalov@samsung.com>","User-Agent":"Mutt/1.8.3 (2017-05-23)","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.15","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.26]);\n\tThu, 21 Sep 2017 10:16:15 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCH v10 06/10] migration: add postcopy\n\tblocktime ctx into MigrationIncomingState","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"heetae82.ahn@samsung.com, quintela@redhat.com, qemu-devel@nongnu.org,\n\tpeterx@redhat.com, i.maximets@samsung.com","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1772718,"web_url":"http://patchwork.ozlabs.org/comment/1772718/","msgid":"<6b5a0775-d17b-946f-fb28-9e4c8839b789@samsung.com>","list_archive_url":null,"date":"2017-09-21T11:27:45","subject":"Re: [Qemu-devel] [PATCH v10 06/10] migration: add postcopy\n\tblocktime ctx into MigrationIncomingState","submitter":{"id":18164,"url":"http://patchwork.ozlabs.org/api/people/18164/","name":"Alexey Perevalov","email":"a.perevalov@samsung.com"},"content":"On 09/21/2017 01:16 PM, Dr. David Alan Gilbert wrote:\n> * Alexey Perevalov (a.perevalov@samsung.com) wrote:\n>> This patch adds request to kernel space for UFFD_FEATURE_THREAD_ID,\n>> in case when this feature is provided by kernel.\n>>\n>> PostcopyBlocktimeContext is incapsulated inside postcopy-ram.c,\n>> due to it's postcopy only feature.\n>> Also it defines PostcopyBlocktimeContext's instance live time.\n>> Information from PostcopyBlocktimeContext instance will be provided\n>> much after postcopy migration end, instance of PostcopyBlocktimeContext\n>> will live till QEMU exit, but part of it (vcpu_addr,\n>> page_fault_vcpu_time) used only during calculation, will be released\n>> when postcopy ended or failed.\n>>\n>> To enable postcopy blocktime calculation on destination, need to request\n>> proper capabiltiy (Patch for documentation will be at the tail of the patch\n>> set).\n>>\n>> As an example following command enable that capability, assume QEMU was\n>> started with\n>> -chardev socket,id=charmonitor,path=/var/lib/migrate-vm-monitor.sock\n>> option to control it\n>>\n>> [root@host]#printf \"{\\\"execute\\\" : \\\"qmp_capabilities\\\"}\\r\\n \\\n>> {\\\"execute\\\": \\\"migrate-set-capabilities\\\" , \\\"arguments\\\":   {\n>> \\\"capabilities\\\": [ { \\\"capability\\\": \\\"postcopy-blocktime\\\", \\\"state\\\":\n>> true } ] } }\" | nc -U /var/lib/migrate-vm-monitor.sock\n>>\n>> Or just with HMP\n>> (qemu) migrate_set_capability postcopy-blocktime on\n>>\n>> Signed-off-by: Alexey Perevalov <a.perevalov@samsung.com>\n>> ---\n>>   migration/migration.h    |  8 ++++++\n>>   migration/postcopy-ram.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++\n>>   2 files changed, 73 insertions(+)\n>>\n>> diff --git a/migration/migration.h b/migration/migration.h\n>> index 56bf33c..770466b 100644\n>> --- a/migration/migration.h\n>> +++ b/migration/migration.h\n>> @@ -21,6 +21,8 @@\n>>   #include \"qemu/coroutine_int.h\"\n>>   #include \"hw/qdev.h\"\n>>   \n>> +struct PostcopyBlocktimeContext;\n>> +\n>>   /* State for the incoming migration */\n>>   struct MigrationIncomingState {\n>>       QEMUFile *from_src_file;\n>> @@ -58,6 +60,12 @@ struct MigrationIncomingState {\n>>       /* The coroutine we should enter (back) after failover */\n>>       Coroutine *migration_incoming_co;\n>>       QemuSemaphore colo_incoming_sem;\n>> +\n>> +    /*\n>> +     * PostcopyBlocktimeContext to keep information for postcopy\n>> +     * live migration, to calculate vCPU block time\n>> +     * */\n>> +    struct PostcopyBlocktimeContext *blocktime_ctx;\n>>   };\n>>   \n>>   MigrationIncomingState *migration_incoming_get_current(void);\n>> diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c\n>> index bec6c2c..cc78981 100644\n>> --- a/migration/postcopy-ram.c\n>> +++ b/migration/postcopy-ram.c\n>> @@ -61,6 +61,58 @@ struct PostcopyDiscardState {\n>>   #include <sys/eventfd.h>\n>>   #include <linux/userfaultfd.h>\n>>   \n>> +typedef struct PostcopyBlocktimeContext {\n>> +    /* time when page fault initiated per vCPU */\n>> +    int64_t *page_fault_vcpu_time;\n>> +    /* page address per vCPU */\n>> +    uint64_t *vcpu_addr;\n>> +    int64_t total_blocktime;\n>> +    /* blocktime per vCPU */\n>> +    int64_t *vcpu_blocktime;\n>> +    /* point in time when last page fault was initiated */\n>> +    int64_t last_begin;\n>> +    /* number of vCPU are suspended */\n>> +    int smp_cpus_down;\n>> +\n>> +    /*\n>> +     * Handler for exit event, necessary for\n>> +     * releasing whole blocktime_ctx\n>> +     */\n>> +    Notifier exit_notifier;\n>> +    /*\n>> +     * Handler for postcopy event, necessary for\n>> +     * releasing unnecessary part of blocktime_ctx\n>> +     */\n>> +    Notifier postcopy_notifier;\n> Is this actually used? It's just that...\n>\n>> +} PostcopyBlocktimeContext;\n>> +\n>> +static void destroy_blocktime_context(struct PostcopyBlocktimeContext *ctx)\n>> +{\n>> +    g_free(ctx->page_fault_vcpu_time);\n>> +    g_free(ctx->vcpu_addr);\n>> +    g_free(ctx->vcpu_blocktime);\n>> +    g_free(ctx);\n>> +}\n>> +\n>> +static void migration_exit_cb(Notifier *n, void *data)\n>> +{\n>> +    PostcopyBlocktimeContext *ctx = container_of(n, PostcopyBlocktimeContext,\n>> +                                                 exit_notifier);\n>> +    destroy_blocktime_context(ctx);\n>> +}\n>> +\n>> +static struct PostcopyBlocktimeContext *blocktime_context_new(void)\n>> +{\n>> +    PostcopyBlocktimeContext *ctx = g_new0(PostcopyBlocktimeContext, 1);\n>> +    ctx->page_fault_vcpu_time = g_new0(int64_t, smp_cpus);\n>> +    ctx->vcpu_addr = g_new0(uint64_t, smp_cpus);\n>> +    ctx->vcpu_blocktime = g_new0(int64_t, smp_cpus);\n>> +\n>> +    ctx->exit_notifier.notify = migration_exit_cb;\n>> +    qemu_add_exit_notifier(&ctx->exit_notifier);\n>> +    add_migration_state_change_notifier(&ctx->postcopy_notifier);\n> Patch 7 removes that line, and I don't see what puts it back;\n> and this line doesn't actually set up ctx->postcopy_notifier.\n>\n> Other than that, it looks OK.\nThank you, I really changed my mind, and decided to keep\nblocktime context (and all calculated values) till the\nstop of VM, but not till the end of migration.","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xyZ9f6mnyz9t43\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 21 Sep 2017 21:28:21 +1000 (AEST)","from localhost ([::1]:53012 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1duzeU-0008BY-9s\n\tfor incoming@patchwork.ozlabs.org; Thu, 21 Sep 2017 07:28:18 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:58304)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <a.perevalov@samsung.com>) id 1duzeA-0008BA-6T\n\tfor qemu-devel@nongnu.org; Thu, 21 Sep 2017 07:27:59 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <a.perevalov@samsung.com>) id 1duze4-0007Aq-3O\n\tfor qemu-devel@nongnu.org; Thu, 21 Sep 2017 07:27:58 -0400","from mailout2.w1.samsung.com ([210.118.77.12]:53978)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <a.perevalov@samsung.com>)\n\tid 1duze3-00076y-Px\n\tfor qemu-devel@nongnu.org; Thu, 21 Sep 2017 07:27:52 -0400","from eucas1p2.samsung.com (unknown [182.198.249.207])\n\tby mailout2.w1.samsung.com (KnoxPortal) with ESMTP id\n\t20170921112748euoutp023f3e77e2a70d620f2d4c466fb490f0af~mXOX8jOkh0265202652euoutp02h;\n\tThu, 21 Sep 2017 11:27:48 +0000 (GMT)","from eusmges1.samsung.com (unknown [203.254.199.239]) by\n\teucas1p1.samsung.com (KnoxPortal) with ESMTP id\n\t20170921112747eucas1p1c8c7fd45d158f4c34bcc241ee54ac1e7~mXOXVL8191159211592eucas1p1p;\n\tThu, 21 Sep 2017 11:27:47 +0000 (GMT)","from eucas1p1.samsung.com ( [182.198.249.206]) by\n\teusmges1.samsung.com  (EUCPMTA) with SMTP id 6D.09.12576.332A3C95;\n\tThu, 21 Sep 2017 12:27:47 +0100 (BST)","from eusmgms2.samsung.com (unknown [182.198.249.180]) by\n\teucas1p2.samsung.com (KnoxPortal) with ESMTP id\n\t20170921112746eucas1p20fce34e4d44e2f3c5e816bc02d5eaf79~mXOWpDuus2427224272eucas1p2o;\n\tThu, 21 Sep 2017 11:27:46 +0000 (GMT)","from eusync1.samsung.com ( [203.254.199.211]) by\n\teusmgms2.samsung.com (EUCPMTA) with SMTP id 8A.2E.20118.232A3C95;\n\tThu, 21 Sep 2017 12:27:46 +0100 (BST)","from [106.109.129.199] by eusync1.samsung.com (Oracle\n\tCommunications Messaging Server 7.0.5.31.0 64bit (built May 5 2014))\n\twith ESMTPA id <0OWM00F5JNUABI60@eusync1.samsung.com>;\n\tThu, 21 Sep 2017 12:27:46 +0100 (BST)"],"X-AuditID":"cbfec7ef-f79ee6d000003120-0d-59c3a233c596","To":"\"Dr. David Alan Gilbert\" <dgilbert@redhat.com>","From":"Alexey Perevalov <a.perevalov@samsung.com>","Message-id":"<6b5a0775-d17b-946f-fb28-9e4c8839b789@samsung.com>","Date":"Thu, 21 Sep 2017 14:27:45 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-version":"1.0","In-reply-to":"<20170921101608.GA2717@work-vm>","Content-type":"text/plain; charset=\"utf-8\"; format=\"flowed\"","Content-transfer-encoding":"7bit","Content-language":"en-GB","X-Brightmail-Tracker":["H4sIAAAAAAAAA+NgFprEKsWRmVeSWpSXmKPExsWy7djPc7rGiw5HGsx6JWLRu+0eu8XEt+tZ\n\tLaZ9vs1ucaX9J7vFlv3f2C2O9+5gsbizpY/Jgd3jybXNTB7v911l8+jbsooxgDmKyyYlNSez\n\tLLVI3y6BK2PunmfsBbsMKhquHmJsYOxX62Lk5JAQMJFY+fA2M4QtJnHh3nq2LkYuDiGBZYwS\n\tOz/eYIZwPjNKLHyxE8jhAOtYeE0Mruj3ySmMEM4LRonHa5+ygBQJCyRJ3O7UBDFFBIwkjv1U\n\tAClhFuhglNg8q58VJM4mYCCx754tyGJeATuJa/efgHWyCKhKTPhgDxIWFYiQ2PZ9BhtEiaDE\n\tj8n3WEBsTgEdiS8f5rGD2MwCVhLP/rWyQtjyEpvXvGWGsMUljt2/CXaZhMAJNomfD9+zQZzv\n\tInF4mTzEv8ISr45vYYewZSQuT+5mgahvZ5To3tnJCuFMYJQ4M/0vVJW9xKmbV5kgNvBJTNo2\n\tHRomvBIdbUIQJR4S1zo/MELYjhLrz3yABs9vRomtcyewTWCUn4XkoVlInpiF5IlZSJ5YwMiy\n\tilEktbQ4Nz212FCvODG3uDQvXS85P3cTIzClnP53/P0OxqfNIYcYBTgYlXh4J5gcjhRiTSwr\n\trsw9xCjBwawkwnu2BijEm5JYWZValB9fVJqTWnyIUZqDRUmc1zaqLVJIID2xJDU7NbUgtQgm\n\ty8TBKdXAKDG/LEFbqHlqYdndmENiRfOa9328ICHQdezDi8iG0Kpm6Wu7beqP3wotvPPl309W\n\tm8t+q4XelTy4dpVV5kuWm9OE5DOVunp/vXXS9R16jzlw+yyYefrk7T8irrx3pK8p7vqxUXri\n\to57VPQ+33XndlfX21KRl3ZGTAjxqLs6e+fy2r91vldkTnyqxFGckGmoxFxUnAgDxtYloJQMA\n\tAA==","H4sIAAAAAAAAA+NgFnrGLMWRmVeSWpSXmKPExsVy+t/xy7pGiw5HGux7amTRu+0eu8XEt+tZ\n\tLaZ9vs1ucaX9J7vFlv3f2C2O9+5gsbizpY/Jgd3jybXNTB7v911l8+jbsooxgDmKyyYlNSez\n\tLLVI3y6BK2PunmfsBbsMKhquHmJsYOxX62Lk4JAQMJFYeE2si5ETyBSTuHBvPVsXIxeHkMAS\n\tRomzdzYyQjgvGCXerjjMDtIgLJAkcbtTE8QUETCSOPZTAaSEWaCDUeL7pT3sIIOEBH4zSuyd\n\tGgZSwyZgILHvni1ImFfATuLa/ScsIGEWAVWJCR/sQcKiAhESfW8vs0OUCEr8mHyPBcTmFNCR\n\t+PJhHlicWcBM4svLw6wQtrzE5jVvmSFscYlj928yTmAUnIWkfRaSlllIWmYhaVnAyLKKUSS1\n\ttDg3PbfYSK84Mbe4NC9dLzk/dxMjMPS3Hfu5ZQdj17vgQ4wCHIxKPLwTTA5HCrEmlhVX5h5i\n\tlOBgVhLhPVsDFOJNSaysSi3Kjy8qzUktPsQozcGiJM7bu2d1pJBAemJJanZqakFqEUyWiYNT\n\tqoFRI2tZ1v87NXOn+rrddrTRvV+69+9P8XUrLVe+3yq/evKxgxL1cnF7FHk+LrP/9/HaLzt+\n\tHhbpH09EXp40X/RLNshy65tDvldCfR/r/3w4m9vij31I9ePL05P2pnHFyNo1zxLqFf5eceCN\n\tZadRfLnI3evyx/51JqauuMK3eUnchzv5L2+V3n4/R4mlOCPRUIu5qDgRAKMRQcZ5AgAA"],"X-CMS-MailID":"20170921112746eucas1p20fce34e4d44e2f3c5e816bc02d5eaf79","X-Msg-Generator":"CA","X-Sender-IP":"182.198.249.180","X-Local-Sender":"=?utf-8?q?Alexey_Perevalov=1BSRR-Virtualization_Lab=1B?=\n\t=?utf-8?b?7IK87ISx7KCE7J6QG1NlbmlvciBFbmdpbmVlcg==?=","X-Global-Sender":"=?utf-8?q?Alexey_Perevalov=1BSRR-Virtualization_Lab=1BSa?=\n\t=?utf-8?q?msung_Electronics=1BSenior_Engineer?=","X-Sender-Code":"=?utf-8?q?C10=1BCISHQ=1BC10GD01GD010154?=","CMS-TYPE":"201P","X-CMS-RootMailID":"20170919164824eucas1p23607e53e3ea38f8be4e885bb960e803f","X-RootMTR":"20170919164824eucas1p23607e53e3ea38f8be4e885bb960e803f","References":"<1505839684-10046-1-git-send-email-a.perevalov@samsung.com>\n\t<CGME20170919164824eucas1p23607e53e3ea38f8be4e885bb960e803f@eucas1p2.samsung.com>\n\t<1505839684-10046-7-git-send-email-a.perevalov@samsung.com>\n\t<20170921101608.GA2717@work-vm>","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 3.x [fuzzy]","X-Received-From":"210.118.77.12","Subject":"Re: [Qemu-devel] [PATCH v10 06/10] migration: add postcopy\n\tblocktime ctx into MigrationIncomingState","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"heetae82.ahn@samsung.com, quintela@redhat.com, qemu-devel@nongnu.org,\n\tpeterx@redhat.com, i.maximets@samsung.com","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]