All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bob Liu <bob.liu@oracle.com>
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, julien.grall@citrix.com,
	linux-kernel@vger.kernel.org, Bob Liu <bob.liu@oracle.com>
Subject: [PATCH 2/3] driver: xen-blkfront: move talk_to_blkback to a more suitable place
Date: Wed,  3 Jun 2015 13:40:02 +0800	[thread overview]
Message-ID: <1433310003-13089-2-git-send-email-bob.liu@oracle.com> (raw)
In-Reply-To: <1433310003-13089-1-git-send-email-bob.liu@oracle.com>

The major responsibility of talk_to_blkback() is allocate and initialize
the request ring and write the ring info to xenstore.
But this work should be done after backend entered 'XenbusStateInitWait' as
defined in the protocol file.
See xen/include/public/io/blkif.h in XEN git tree:
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.

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.

Changes in v2:
 - Re-write the commit message to be more clear.

Signed-off-by: Bob Liu <bob.liu@oracle.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
---
 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.7.10.4


  parent reply	other threads:[~2015-06-03  5:40 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-03  5:40 [PATCH 1/3] drivers: xen-blkback: delay pending_req allocation to connect_ring Bob Liu
2015-06-03  5:40 ` [PATCH 2/3] driver: xen-blkfront: move talk_to_blkback to a more suitable place Bob Liu
2015-06-03  5:40 ` Bob Liu [this message]
2015-06-03  5:40 ` [PATCH 3/3] xen/block: add multi-page ring support Bob Liu
2015-06-09  8:50   ` Bob Liu
2015-06-09  8:50   ` Bob Liu
2015-06-09  8:52     ` Paul Durrant
2015-06-09  8:52     ` Paul Durrant
2015-06-09 13:39       ` Konrad Rzeszutek Wilk
2015-06-09 13:39       ` Konrad Rzeszutek Wilk
2015-06-09 13:48         ` Bob Liu
2015-06-09 13:48         ` Bob Liu
2015-06-09 14:07         ` Roger Pau Monné
2015-06-09 14:21           ` Konrad Rzeszutek Wilk
2015-06-19 20:12             ` [Xen-devel] " Konrad Rzeszutek Wilk
2015-06-19 20:12               ` Konrad Rzeszutek Wilk
2015-06-09 14:21           ` Konrad Rzeszutek Wilk
2015-06-22  1:20           ` Bob Liu
2015-06-22  1:20           ` Bob Liu
2015-06-22 13:47             ` Konrad Rzeszutek Wilk
2015-06-22 13:47             ` Konrad Rzeszutek Wilk
2015-06-22 13:56             ` [PATCH] drivers: xen-blkfront: only talk_to_blkback() when in XenbusStateInitialising Konrad Rzeszutek Wilk
2015-06-22 14:06               ` Konrad Rzeszutek Wilk
2015-06-22 14:06               ` Konrad Rzeszutek Wilk
2015-06-23  6:23               ` [Xen-devel] " Jan Beulich
2015-06-23 11:57                 ` Konrad Rzeszutek Wilk
2015-06-23 11:57                 ` Konrad Rzeszutek Wilk
2015-06-23  6:23               ` Jan Beulich
2015-06-22 13:56             ` Konrad Rzeszutek Wilk
2015-06-23 12:51             ` [PATCH 3/3] xen/block: add multi-page ring support Marcus Granado
2015-06-23 12:51             ` Marcus Granado
2015-06-09 14:07         ` Roger Pau Monné
2015-06-03  5:40 ` Bob Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1433310003-13089-2-git-send-email-bob.liu@oracle.com \
    --to=bob.liu@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=julien.grall@citrix.com \
    --cc=justing@spectralogic.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paul.durrant@citrix.com \
    --cc=roger.pau@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.