From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54544) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XP8f8-0003sM-FX for qemu-devel@nongnu.org; Wed, 03 Sep 2014 07:23:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XP8f3-0006Cc-OI for qemu-devel@nongnu.org; Wed, 03 Sep 2014 07:23:42 -0400 Date: Wed, 3 Sep 2014 14:26:54 +0300 From: "Michael S. Tsirkin" Message-ID: <20140903112654.GA9982@redhat.com> References: <1409740546-9523-1-git-send-email-mst@redhat.com> <5406F2FE.2090907@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5406F2FE.2090907@redhat.com> Subject: Re: [Qemu-devel] [PATCH v3] vhost_net: cleanup recovery List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jason Wang Cc: Andrey Korolyov , qemu-devel@nongnu.org, qemu-stable@nongnu.org On Wed, Sep 03, 2014 at 06:52:46PM +0800, Jason Wang wrote: > On 09/03/2014 06:35 PM, Michael S. Tsirkin wrote: > > commit aad4dce934649b3a398396fc2a76f215bb194ea4 > > vhost_net: start/stop guest notifiers properly > > > > changed the order of calls for guest notifiers, > > but did not recover in the correct (reverse) order. > > Fix it up. > > > > Cc: qemu-stable@nongnu.org > > Cc: Andrey Korolyov > > Cc: Jason Wang > > Signed-off-by: Michael S. Tsirkin > > --- > > hw/net/vhost_net.c | 12 +++++++++--- > > 1 file changed, 9 insertions(+), 3 deletions(-) > > > > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c > > index ba5d544..3819044 100644 > > --- a/hw/net/vhost_net.c > > +++ b/hw/net/vhost_net.c > > @@ -289,7 +289,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs, > > BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(dev))); > > VirtioBusState *vbus = VIRTIO_BUS(qbus); > > VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(vbus); > > - int r, i = 0; > > + int r, e, i; > > > > if (!vhost_net_device_endian_ok(dev)) { > > error_report("vhost-net does not support cross-endian"); > > @@ -317,16 +317,22 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs, > > r = vhost_net_start_one(get_vhost_net(ncs[i].peer), dev); > > > > if (r < 0) { > > - goto err; > > + goto err_start; > > } > > } > > > > return 0; > > > > -err: > > +err_start: > > while (--i >= 0) { > > vhost_net_stop_one(get_vhost_net(ncs[i].peer), dev); > > } > > + e = k->set_guest_notifiers(qbus->parent, total_queues * 2, false); > > + if (e < 0) { > > + fprintf(stderr, "vhost guest notifier cleanup failed: %d\n", e); > > + fflush(stderr); > > + } > > +err: > > return r; > > } > > > > Acked-by: Jason Wang OK I will just roll this up into the original patch.