linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Valentin Vidic <Valentin.Vidic@CARNet.hr>
Cc: <drbd-user@lists.linbit.com>, Jens Axboe <axboe@kernel.dk>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	<linux-kernel@vger.kernel.org>, <stable@vger.kernel.org>,
	<linux-block@vger.kernel.org>, <xen-devel@lists.xenproject.org>
Subject: Re: [DRBD-user] [PATCH] xen-blkback: Switch to closed state after releasing the backing device
Date: Thu, 13 Sep 2018 17:08:00 +0200	[thread overview]
Message-ID: <20180913150800.haswzd7t2xccbgvl@mac.bytemobile.com> (raw)
In-Reply-To: <20180910161831.GG26705@gavran.carpriv.carnet.hr>

On Mon, Sep 10, 2018 at 06:18:31PM +0200, Valentin Vidic wrote:
> On Mon, Sep 10, 2018 at 05:00:58PM +0200, Roger Pau Monné wrote:
> > I can try to take a look at this and attempt to make sure the state is
> > only changed to closed in blkback _after_ the device has been
> > released, but it might take me a couple of days to get you a patch.
> 
> Thanks, I have two test nodes now where I can try different approaches.
> 
> > I'm afraid that other hotplug scripts will also have issues with such
> > behavior, and we shouldn't force all users of hotplug scripts to add
> > such workarounds.
> 
> True, iSCSI and other "network" disks might have similar problems.

So I have the following patch which I think might solve your issues
while keeping the reset logic working. Would you mind giving it a try
with your use case and pvgrub?

Thanks, Roger.
---8<---
From c6a76a6265f29440c886b422c9d1b8549ffd6ed8 Mon Sep 17 00:00:00 2001
From: Roger Pau Monne <roger.pau@citrix.com>
Date: Thu, 13 Sep 2018 11:27:57 +0200
Subject: [PATCH] xen-blkback: only set Closed state when resources have been
 released
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Don't set the backend to Closed state until all the resources have
been released and the blkback instance is gone. Setting the backend
state to Closed will be done by xenbus_dev_remove after removing the
device instance.

Note that this requires disconnecting and allowing reconnection with
state Closing, since the Closed state will only be reached when
detaching the device.

Reported-by: Valentin Vidic <Valentin.Vidic@carnet.hr>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 drivers/block/xen-blkback/xenbus.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c
index a4bc74e72c39..b0629f1b0511 100644
--- a/drivers/block/xen-blkback/xenbus.c
+++ b/drivers/block/xen-blkback/xenbus.c
@@ -770,7 +770,8 @@ static void frontend_changed(struct xenbus_device *dev,
 
 	switch (frontend_state) {
 	case XenbusStateInitialising:
-		if (dev->state == XenbusStateClosed) {
+		if (dev->state == XenbusStateClosed ||
+		    dev->state == XenbusStateClosing) {
 			pr_info("%s: prepare for reconnect\n", dev->nodename);
 			xenbus_switch_state(dev, XenbusStateInitWait);
 		}
@@ -809,12 +810,12 @@ static void frontend_changed(struct xenbus_device *dev,
 		break;
 
 	case XenbusStateClosing:
+		xen_blkif_disconnect(be->blkif);
 		xenbus_switch_state(dev, XenbusStateClosing);
 		break;
 
 	case XenbusStateClosed:
 		xen_blkif_disconnect(be->blkif);
-		xenbus_switch_state(dev, XenbusStateClosed);
 		if (xenbus_dev_is_online(dev))
 			break;
 		/* fall through */
-- 
2.18.0


  reply	other threads:[~2018-09-13 15:09 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-29  6:52 [PATCH] xen-blkback: Switch to closed state after releasing the backing device Valentin Vidic
2018-08-29  8:16 ` Juergen Gross
2018-08-29  8:27   ` Valentin Vidic
2018-08-29  8:43     ` Juergen Gross
2018-08-29  9:23       ` Valentin Vidic
2018-08-29  9:29         ` Juergen Gross
2018-09-05 10:36 ` Roger Pau Monné
2018-09-05 16:27   ` Valentin Vidic
2018-09-06 16:14     ` Roger Pau Monné
2018-09-06 22:03       ` Valentin Vidic
2018-09-07 12:03     ` [DRBD-user] " Lars Ellenberg
2018-09-07 12:13       ` Valentin Vidic
2018-09-07 13:28         ` Lars Ellenberg
2018-09-07 16:45           ` Valentin Vidic
2018-09-07 17:14             ` Valentin Vidic
2018-09-08  7:34               ` Valentin Vidic
2018-09-10 12:45                 ` Lars Ellenberg
2018-09-10 13:22                   ` Valentin Vidic
2018-09-10 15:00                     ` Roger Pau Monné
2018-09-10 16:18                       ` Valentin Vidic
2018-09-13 15:08                         ` Roger Pau Monné [this message]
2018-09-14 11:49                           ` Valentin Vidic
2018-09-14 16:18                             ` Roger Pau Monné
     [not found]   ` <20180905113515.GU26705@gavran.carpriv.carnet.hr>
2018-09-05 16:28     ` Valentin Vidic
2018-09-06 16:29       ` Roger Pau Monné
2018-09-06 22:19         ` Valentin Vidic
2018-09-07  7:15           ` Roger Pau Monné
2018-09-07  7:23             ` Valentin Vidic
2018-09-07  7:54               ` Roger Pau Monné
2018-09-07 10:20                 ` Valentin Vidic
2018-09-07 10:43                   ` Roger Pau Monné
2018-09-07 11:15                     ` Valentin Vidic

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=20180913150800.haswzd7t2xccbgvl@mac.bytemobile.com \
    --to=roger.pau@citrix.com \
    --cc=Valentin.Vidic@CARNet.hr \
    --cc=axboe@kernel.dk \
    --cc=drbd-user@lists.linbit.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=xen-devel@lists.xenproject.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 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).