From patchwork Sat May 5 14:35:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: 858585 jemmy X-Patchwork-Id: 10382175 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id F1A3660467 for ; Sat, 5 May 2018 14:37:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E179623B34 for ; Sat, 5 May 2018 14:37:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D5DC928F54; Sat, 5 May 2018 14:37:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0A11F23B34 for ; Sat, 5 May 2018 14:37:15 +0000 (UTC) Received: from localhost ([::1]:39037 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEyJH-0000mW-7J for patchwork-qemu-devel@patchwork.kernel.org; Sat, 05 May 2018 10:37:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58389) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEyI9-0008Mk-08 for qemu-devel@nongnu.org; Sat, 05 May 2018 10:36:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEyI7-00084m-UQ for qemu-devel@nongnu.org; Sat, 05 May 2018 10:36:05 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:37170) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEyI7-00084C-Nj for qemu-devel@nongnu.org; Sat, 05 May 2018 10:36:03 -0400 Received: by mail-pg0-x243.google.com with SMTP id a13-v6so17326052pgu.4 for ; Sat, 05 May 2018 07:36:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mf5U6AdnNQLsermZiUHmfOKFPT6CfqKr1GXfJOxDllU=; b=acMXzLLTY5SWzegsFO/u7lurnV0XOJEucmLcKm9ZA3tZhf9G4J6FfnqG07ikgnQjBQ kFPpIQMh/IqZP8BNJe0QjxslRbzDNl12uOWqT8RyBzsSz0/5zmXdE7M/nHhw6xPmytPC 9B63nvF36YDH2nlglWjEZ19NWxgIU6JmSE1cpz1bhAFNUhcYPIpyIGQO0qmTrWjki8SC V5UA1zP5MoA+afz9h56xx5br8xwsgRCOPE0DY4RPuC1bhO2vKjieYlhdAHf+FG80Jzno 7GIAs1UFD5B2OH8i6cDujvNZzx7ihj/qPI36um13XzgQbx8zuOXIdVNtcDQkeviqMsu3 yVBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mf5U6AdnNQLsermZiUHmfOKFPT6CfqKr1GXfJOxDllU=; b=TVQpaxcD0bpi/3XKdsvX5n8Th7ooMnn1uOqdPtg7qiG2ClAAPZchz211IYb7MT0HXw 2HIQpIaNIi3jontnjWxZ+m7jZ+PTG8UJTTEqByH3o2dbZj1NGkBNR7LGKCbcXGo88K5y zq52XS34U68/5HODXzcRqLr1Qqmeq7LokXIZKvq6mIBNAnfqxC0KxPidkg+fuYJ9Y2Z+ 3xt1p6ZWkrl3b/D2lvX5BH54abnuCCnwvLkbFgjKEQFoNste948Yo8avTynNhsJvSG9h 27ZnKOO12ENBEIwt6J2GY3p7zAnpvfM522r34vxcxASF8eK6evRq+sUOHa1+Sq9J/hn/ tfTg== X-Gm-Message-State: ALQs6tDD05Bv7W1d2rSOQ85TUXfUn++gIF8pWvJwOl+o8AO/518Sx/7B sxkYC+g0v+BlOFp/kEFfhLVaJA== X-Google-Smtp-Source: AB8JxZqhs1PDsRDScgbynm8/Yb7q3o8kKKm2qWyueABxXIMC2j2Y4SnKG5pJaZhhlGA0Bh6eW6zfjA== X-Received: by 10.98.69.137 with SMTP id n9mr29538245pfi.158.1525530962977; Sat, 05 May 2018 07:36:02 -0700 (PDT) Received: from VM_127_91_centos.localdomain ([119.28.195.137]) by smtp.gmail.com with ESMTPSA id n67sm38529640pfh.188.2018.05.05.07.36.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 05 May 2018 07:36:02 -0700 (PDT) From: Lidong Chen X-Google-Original-From: Lidong Chen To: quintela@redhat.com, dgilbert@redhat.com, berrange@redhat.com Date: Sat, 5 May 2018 22:35:31 +0800 Message-Id: <1525530936-21835-2-git-send-email-lidongchen@tencent.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1525530936-21835-1-git-send-email-lidongchen@tencent.com> References: <1525530936-21835-1-git-send-email-lidongchen@tencent.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::243 Subject: [Qemu-devel] [PATCH v3 1/6] migration: disable RDMA WRITE after postcopy started X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: adido@mellanox.com, galsha@mellanox.com, aviadye@mellanox.com, qemu-devel@nongnu.org, Lidong Chen Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP RDMA WRITE operations are performed with no notification to the destination qemu, then the destination qemu can not wakeup. This patch disable RDMA WRITE after postcopy started. Signed-off-by: Lidong Chen Reviewed-by: Dr. David Alan Gilbert --- migration/qemu-file.c | 8 ++++++-- migration/rdma.c | 12 ++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/migration/qemu-file.c b/migration/qemu-file.c index 0463f4c..977b9ae 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -253,8 +253,12 @@ size_t ram_control_save_page(QEMUFile *f, ram_addr_t block_offset, if (f->hooks && f->hooks->save_page) { int ret = f->hooks->save_page(f, f->opaque, block_offset, offset, size, bytes_sent); - f->bytes_xfer += size; - if (ret != RAM_SAVE_CONTROL_DELAYED) { + if (ret != RAM_SAVE_CONTROL_NOT_SUPP) { + f->bytes_xfer += size; + } + + if (ret != RAM_SAVE_CONTROL_DELAYED && + ret != RAM_SAVE_CONTROL_NOT_SUPP) { if (bytes_sent && *bytes_sent > 0) { qemu_update_position(f, *bytes_sent); } else if (ret < 0) { diff --git a/migration/rdma.c b/migration/rdma.c index da474fc..a22be43 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -2927,6 +2927,10 @@ static size_t qemu_rdma_save_page(QEMUFile *f, void *opaque, CHECK_ERROR_STATE(); + if (migrate_get_current()->state == MIGRATION_STATUS_POSTCOPY_ACTIVE) { + return RAM_SAVE_CONTROL_NOT_SUPP; + } + qemu_fflush(f); if (size > 0) { @@ -3482,6 +3486,10 @@ static int qemu_rdma_registration_start(QEMUFile *f, void *opaque, CHECK_ERROR_STATE(); + if (migrate_get_current()->state == MIGRATION_STATUS_POSTCOPY_ACTIVE) { + return 0; + } + trace_qemu_rdma_registration_start(flags); qemu_put_be64(f, RAM_SAVE_FLAG_HOOK); qemu_fflush(f); @@ -3504,6 +3512,10 @@ static int qemu_rdma_registration_stop(QEMUFile *f, void *opaque, CHECK_ERROR_STATE(); + if (migrate_get_current()->state == MIGRATION_STATUS_POSTCOPY_ACTIVE) { + return 0; + } + qemu_fflush(f); ret = qemu_rdma_drain_cq(f, rdma);