From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 9F1078D97 for ; Tue, 14 Jun 2016 13:58:53 +0200 (CEST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP; 14 Jun 2016 04:58:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,470,1459839600"; d="scan'208";a="121593447" Received: from yliu-dev.sh.intel.com (HELO yliu-dev) ([10.239.67.162]) by fmsmga004.fm.intel.com with ESMTP; 14 Jun 2016 04:58:50 -0700 Date: Tue, 14 Jun 2016 20:00:59 +0800 From: Yuanhan Liu To: dev@dpdk.org Cc: huawei.xie@intel.com, Traynor Kevin , marcandre.lureau@redhat.com Message-ID: <20160614120059.GX10038@yliu-dev.sh.intel.com> References: <1465272308-3572-1-git-send-email-yuanhan.liu@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1465272308-3572-1-git-send-email-yuanhan.liu@linux.intel.com> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] [PATCH v3 0/6] vhost: add vhost-user client mode and reconnect ability X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2016 11:58:54 -0000 Applied to dpdk-next-virtio. --yliu On Tue, Jun 07, 2016 at 12:05:02PM +0800, Yuanhan Liu wrote: > v3: - make the "reconnect" feature be default for client mode, as it's > good to handle guest OS restart with less effort. > - fix var not-initilized error pointed out by Rich > > > NOTE: I created a branch at dpdk.org [0] for more convenient testing: > > [0]: git://dpdk.org/next/dpdk-next-virtio for-testing > > > When the DPDK vhost-user application (such as OVS) restarts (due to > crash, or update), the vhost-user connection between DPDK and QEMU > won't be established automatically again. In another word, the virtio > net is broken. > > The reason it doesn't work is that DPDK just acts as server only. > A restart of the server needs a reconnection from the client (QEMU). > However, reconnect from QEMU is not supported from QEMU. > > Adding the support of client mode and let DPDK be the client somehow > would resolve above issue a bit easier: a restart of DPDK would naturally > try to connect to the server (QEMU) automatically. > > Therefore, this patchset implements the DPDK vhost-user client mode, by > introducing a new arg (flags) for API rte_vhost_driver_register(). And the > client mode is enabled when RTE_VHOST_USER_CLIENT is given. Note that this > implies an API breakage. However, since this release deals with ABI/API > refactoring, it should not be an issue. > > Another interesting thing to make it work is that you not only have > to consider that case the DPDK vhost-user app might restart, but also > have to think that QEMU might restart as well: guest OS sometimes > just reboots. In such case, when the server is down, the client has > to keep reconnecting with the server until the server is back and the > connection is established again. And that's what "reconnect" patch for. > > Note that current QEMU doesn't not support a second time connection > from client, thus a restart of DPDK vhost-user will not work. This is > because current QEMU won't be able to detect the disconnect from > restart, thus it will not listen for later connections. Patches [1] have > been sent, it's just not merged yet. But unlike the vhost-user mulitple > queue case, that we have critical depends on QEMU implementation, here > we have no such dependency, therefore, I think it's okay to make DPDK > be ready for the "reconnect" stuff first. (note that I also mentioned > this fact in the release doc). > > [1]: http://lists.nongnu.org/archive/html/qemu-devel/2016-05/msg01507.html > > v2: - added release doc > - do not remove socket file for the client mode > - create one thread ony to handle all reconnects > > > Thanks. > --yliu > > --- > Yuanhan Liu (6): > vhost: rename structs for enabling client mode > vhost: add vhost-user client mode > vhost: add reconnect ability > vhost: workaround stale vring base > examples/vhost: add client option > vhost: add pmd client option > > doc/guides/rel_notes/release_16_07.rst | 21 ++ > drivers/net/vhost/rte_eth_vhost.c | 38 ++- > examples/vhost/main.c | 12 +- > lib/librte_vhost/rte_virtio_net.h | 12 +- > lib/librte_vhost/vhost_cuse/vhost-net-cdev.c | 8 +- > lib/librte_vhost/vhost_user/vhost-net-user.c | 403 ++++++++++++++++++--------- > lib/librte_vhost/vhost_user/vhost-net-user.h | 6 - > lib/librte_vhost/virtio-net.c | 9 + > 8 files changed, 361 insertions(+), 148 deletions(-) > > -- > 1.9.0