From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: David Vrabel <david.vrabel@citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/6] xen-blkfront: handle backend CLOSED without CLOSING
Date: Tue, 2 Oct 2012 16:02:55 -0400 [thread overview]
Message-ID: <20121002200255.GA668@phenom.dumpdata.com> (raw)
In-Reply-To: <5069D097.60606@citrix.com>
On Mon, Oct 01, 2012 at 06:19:19PM +0100, David Vrabel wrote:
> On 25/09/12 18:53, David Vrabel wrote:
> > On 21/09/12 17:04, David Vrabel wrote:
> >> From: David Vrabel <david.vrabel@citrix.com>
> >>
> >> Backend drivers shouldn't transistion to CLOSED unless the frontend is
> >> CLOSED. If a backend does transition to CLOSED too soon then the
> >> frontend may not see the CLOSING state and will not properly shutdown.
> >>
> >> So, treat an unexpected backend CLOSED state the same as CLOSING.
> >
> > Didn't handle the frontend block device being mounted. Updated patch here.
>
> Konrad, can you ack this updated patch if you're happy with it.
Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Or should I just carry it in my for-jens-3.7 bug-fixes queue and ask
Jen to pull it once rc0 is out?
>
> Thanks.
>
> David
>
> > 8<---------------------------------
> > xen-blkfront: handle backend CLOSED without CLOSING
> >
> > Backend drivers shouldn't transistion to CLOSED unless the frontend is
> > CLOSED. If a backend does transition to CLOSED too soon then the
> > frontend may not see the CLOSING state and will not properly shutdown.
> >
> > So, treat an unexpected backend CLOSED state the same as CLOSING.
> >
> > If the backend is CLOSED then the frontend can't talk to it so go to
> > CLOSED immediately without waiting for the block device to be closed
> > or unmounted.
> >
> > Signed-off-by: David Vrabel <david.vrabel@citrix.com>
> > ---
> > drivers/block/xen-blkfront.c | 13 +++++++++----
> > 1 files changed, 9 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
> > index 2c2d2e5..c1f5f38 100644
> > --- a/drivers/block/xen-blkfront.c
> > +++ b/drivers/block/xen-blkfront.c
> > @@ -1143,7 +1143,8 @@ static int blkfront_resume(struct xenbus_device *dev)
> > }
> >
> > static void
> > -blkfront_closing(struct blkfront_info *info)
> > +blkfront_closing(struct blkfront_info *info,
> > + enum xenbus_state backend_state)
> > {
> > struct xenbus_device *xbdev = info->xbdev;
> > struct block_device *bdev = NULL;
> > @@ -1167,7 +1168,8 @@ blkfront_closing(struct blkfront_info *info)
> >
> > mutex_lock(&bdev->bd_mutex);
> >
> > - if (bdev->bd_openers) {
> > + /* If the backend is already CLOSED, close now. */
> > + if (bdev->bd_openers && backend_state != XenbusStateClosed) {
> > xenbus_dev_error(xbdev, -EBUSY,
> > "Device in use; refusing to close");
> > xenbus_switch_state(xbdev, XenbusStateClosing);
> > @@ -1340,15 +1342,18 @@ static void blkback_changed(struct xenbus_device *dev,
> > case XenbusStateReconfiguring:
> > case XenbusStateReconfigured:
> > case XenbusStateUnknown:
> > - case XenbusStateClosed:
> > break;
> >
> > case XenbusStateConnected:
> > blkfront_connect(info);
> > break;
> >
> > + case XenbusStateClosed:
> > + if (dev->state == XenbusStateClosed)
> > + break;
> > + /* Missed the backend's Closing state -- fallthrough */
> > case XenbusStateClosing:
> > - blkfront_closing(info);
> > + blkfront_closing(info, backend_state);
> > break;
> > }
> > }
next prev parent reply other threads:[~2012-10-02 20:02 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-21 16:04 [PATCH 0/6] xen: frontend devices should handle missed backend CLOSING David Vrabel
2012-09-21 16:04 ` [PATCH 1/6] xen-netfront: handle backend CLOSED without CLOSING David Vrabel
2012-09-21 16:04 ` [PATCH 2/6] xen-blkfront: " David Vrabel
2012-09-25 17:53 ` David Vrabel
2012-10-01 17:19 ` David Vrabel
2012-10-02 20:02 ` Konrad Rzeszutek Wilk [this message]
2012-10-05 11:42 ` David Vrabel
2012-10-05 11:55 ` Jan Beulich
2012-10-05 15:57 ` David Vrabel
2012-10-09 16:30 ` Konrad Rzeszutek Wilk
2012-10-04 10:14 ` [Xen-devel] " Jan Beulich
2012-10-04 10:31 ` David Vrabel
2012-09-21 16:04 ` [PATCH 3/6] xen-pcifront: " David Vrabel
2012-09-21 16:04 ` [PATCH 4/6] xen-fbfront: " David Vrabel
2012-09-21 16:04 ` [PATCH 5/6] xen-kbdfront: " David Vrabel
2012-09-21 16:04 ` [PATCH 6/6] xen/hvc: " David Vrabel
2012-09-21 17:10 ` [PATCH 0/6] xen: frontend devices should handle missed backend CLOSING Konrad Rzeszutek Wilk
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=20121002200255.GA668@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=david.vrabel@citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xen-devel@lists.xensource.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).