From patchwork Wed May 30 09:43:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: 858585 jemmy X-Patchwork-Id: 922666 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="kzrBgFRA"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40wm061kSGz9s1d for ; Wed, 30 May 2018 19:44:36 +1000 (AEST) Received: from localhost ([::1]:37235 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fNxej-0000KT-Dv for incoming@patchwork.ozlabs.org; Wed, 30 May 2018 05:44:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fNxe8-0000K5-NT for qemu-devel@nongnu.org; Wed, 30 May 2018 05:43:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fNxe5-0006nM-Ld for qemu-devel@nongnu.org; Wed, 30 May 2018 05:43:56 -0400 Received: from mail-pl0-x22d.google.com ([2607:f8b0:400e:c01::22d]:40360) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fNxe5-0006n8-FU for qemu-devel@nongnu.org; Wed, 30 May 2018 05:43:53 -0400 Received: by mail-pl0-x22d.google.com with SMTP id t12-v6so10758579plo.7 for ; Wed, 30 May 2018 02:43:53 -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:mime-version :content-transfer-encoding; bh=tOfoxTJZeNxwI4Ixa5oQRArFlRkn3MQk2mjF0Zkq+Tw=; b=kzrBgFRAWkIoTgySu3F3+jT77eY876mr0DfXADzINrQO9w80R+/w/cACpdnWLtMMQC IFVVN2GzmKAIqYzCgJsS6ACdK5l5m/ZpEhx9fBktFaQCWhcDcDlNm97zMvyv+YKDYX4w COTjXy7TeiI6+FqKibM8nWXgcxED2EJ3ydVwh+3ySZkZmWNegVu7kd7wYq1brUXIWCX0 0fv2b71p0kdFXp+if8k+ePHpGF5gr7OV3ok7gmh421HsUUd7yADK9sVfSKBl/Q1FpRSg GM8YhmJIOTGUtjMZgUINWYIS/pRJ3Cu/KQcnGE/ivHWDxsGmsuLVXPmTbZaoghaf+heZ UGzw== 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:mime-version :content-transfer-encoding; bh=tOfoxTJZeNxwI4Ixa5oQRArFlRkn3MQk2mjF0Zkq+Tw=; b=GryTy4n6UxPlJtTj73TCpMc4wlyW504eNhx0VMWlE1ezxgBmcxAntXT/jYOyXYF8ga GBkkngAPrB8HqUnQWPGz+C2kJYQ2ySF/WERQJYny9HQ86E3kmd0hzOy6b8E+EPApj2aH lDCjhw3VII1s7vgNye5nP1FY8HElF27kprVbesSUO12vbWoF7B3FPpF0/Hk/5NE2fkJZ EdH+hlgR1sXnB74+KiDpau+oBFUJsuy5+p5O+r90KQGWKcH9OWmfrhLn0xNnrw6eJNTj wz721tYEiJgdf/v6ql/fe37I9olFC1U1mLbC7Hr85+DcAjscCqgA73GnL8KJ5oFSaAVh 7yIQ== X-Gm-Message-State: ALKqPwd1U3+Sh2L/bZIRd/xMTanzxDIKaqWLiEKdSk7SdWx6q2LDiVBw VitgJIlrqzCOGOwnlPpDHu8= X-Google-Smtp-Source: ADUXVKIrMZqxPIKnh0R4QiasT3SwwHQLfugROBvjLfDuNs4gowrNIE/0hXvWCj0/9RsHXwl/AclL1Q== X-Received: by 2002:a17:902:8f97:: with SMTP id z23-v6mr2164754plo.329.1527673432322; Wed, 30 May 2018 02:43:52 -0700 (PDT) Received: from VM_93_245_centos.localdomain ([150.109.57.149]) by smtp.gmail.com with ESMTPSA id 29-v6sm60565257pfj.14.2018.05.30.02.43.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 30 May 2018 02:43:51 -0700 (PDT) From: Lidong Chen X-Google-Original-From: Lidong Chen To: zhang.zhanghailiang@huawei.com, quintela@redhat.com, dgilbert@redhat.com, berrange@redhat.com, aviadye@mellanox.com, pbonzini@redhat.com Date: Wed, 30 May 2018 17:43:24 +0800 Message-Id: <1527673416-31268-1-git-send-email-lidongchen@tencent.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c01::22d Subject: [Qemu-devel] [PATCH v4 00/12] Enable postcopy RDMA live migration 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, qemu-devel@nongnu.org, Lidong Chen Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The RDMA QIOChannel does not support bi-directional communication, so when RDMA live migration with postcopy enabled, the source qemu return path get qemu file error. These patches implement bi-directional communication for RDMA QIOChannel and disable the RDMA WRITE during the postcopy phase. This patch just make postcopy works, and will improve performance later. [v4] - not wait RDMA_CM_EVENT_DISCONNECTED event after rdma_disconnect - implement io_set_aio_fd_handler function for RDMA QIOChannel (Juan Quintela) - invoke qio_channel_yield only when qemu_in_coroutine() (Juan Quintela) - create a dedicated thread to release rdma resource - poll the cm event while wait RDMA work request completion - implement the shutdown function for RDMA QIOChannel [v3] - add a mutex in QEMUFile struct to avoid concurrent channel close (Daniel) - destroy the mutex before free QEMUFile (David) - use rdmain and rmdaout instead of rdma->return_path (Daniel) [v2] - does not update bytes_xfer when disable RDMA WRITE (David) - implement bi-directional communication for RDMA QIOChannel (Daniel) Lidong Chen (12): migration: disable RDMA WRITE after postcopy started migration: create a dedicated connection for rdma return path migration: remove unnecessary variables len in QIOChannelRDMA migration: avoid concurrent invoke channel_close by different threads migration: implement bi-directional RDMA QIOChannel migration: Stop rdma yielding during incoming postcopy migration: not wait RDMA_CM_EVENT_DISCONNECTED event after rdma_disconnect migration: implement io_set_aio_fd_handler function for RDMA QIOChannel migration: invoke qio_channel_yield only when qemu_in_coroutine() migration: create a dedicated thread to release rdma resource migration: poll the cm event while wait RDMA work request completion migration: implement the shutdown for RDMA QIOChannel migration/colo.c | 2 + migration/migration.c | 2 + migration/postcopy-ram.c | 2 + migration/qemu-file-channel.c | 12 +- migration/qemu-file.c | 13 +- migration/ram.c | 4 + migration/rdma.c | 435 ++++++++++++++++++++++++++++++++++++------ migration/savevm.c | 3 + migration/trace-events | 1 - 9 files changed, 411 insertions(+), 63 deletions(-)