Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932528AbbELLCP (ORCPT ); Tue, 12 May 2015 07:02:15 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:40099 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752974AbbELLCN (ORCPT ); Tue, 12 May 2015 07:02:13 -0400 From: Bob Liu To: xen-devel@lists.xen.org Cc: david.vrabel@citrix.com, justing@spectralogic.com, konrad.wilk@oracle.com, roger.pau@citrix.com, paul.durrant@citrix.com, linux-kernel@vger.kernel.org, Bob Liu Subject: [PATCH 1/2] driver: xen-blkfront: move talk_to_blkback to the correct place Date: Tue, 12 May 2015 19:01:43 +0800 Message-Id: <1431428504-6623-1-git-send-email-bob.liu@oracle.com> X-Mailer: git-send-email 1.7.10.4 X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3509 Lines: 98 The right place for talk_to_blkback() to query backend features and transport parameters is after backend entered XenbusStateInitWait. There is no problem with this yet, but it is an violation of the design and furthermore it would not allow frontend/backend to negotiate 'multi-page' and 'multi-queue' features which require this. This patch move talk_to_blkback() to blkback_changed() after backend entered XenbusStateInitWait just like blkif.h defined: See: xen/include/public/io/blkif.h Front Back ================================= ===================================== XenbusStateInitialising XenbusStateInitialising o Query virtual device o Query backend device identification properties. data. o Setup OS device instance. o Open and validate backend device. o Publish backend features and transport parameters. | | V XenbusStateInitWait o Query backend features and transport parameters. o Allocate and initialize the request ring. o Publish transport parameters that will be in effect during this connection. | | V XenbusStateInitialised o Query frontend transport parameters. o Connect to the request ring and event channel. o Publish backend device properties. | | V XenbusStateConnected o Query backend device properties. o Finalize OS virtual device instance. | | V XenbusStateConnected Signed-off-by: Bob Liu --- drivers/block/xen-blkfront.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c index 2c61cf8..88e23fd 100644 --- a/drivers/block/xen-blkfront.c +++ b/drivers/block/xen-blkfront.c @@ -1430,13 +1430,6 @@ static int blkfront_probe(struct xenbus_device *dev, info->handle = simple_strtoul(strrchr(dev->nodename, '/')+1, NULL, 0); dev_set_drvdata(&dev->dev, info); - err = talk_to_blkback(dev, info); - if (err) { - kfree(info); - dev_set_drvdata(&dev->dev, NULL); - return err; - } - return 0; } @@ -1906,8 +1899,13 @@ static void blkback_changed(struct xenbus_device *dev, dev_dbg(&dev->dev, "blkfront:blkback_changed to state %d.\n", backend_state); switch (backend_state) { - case XenbusStateInitialising: case XenbusStateInitWait: + if (talk_to_blkback(dev, info)) { + kfree(info); + dev_set_drvdata(&dev->dev, NULL); + break; + } + case XenbusStateInitialising: case XenbusStateInitialised: case XenbusStateReconfiguring: case XenbusStateReconfigured: -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/