Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp815831imm; Thu, 13 Sep 2018 08:10:09 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZZoOSLwgWvl6ytZSBqBD7+AITYx740+FUCsc728/8aEdlYCqJ3gqdp1omBDA4AcN8r5OZ7 X-Received: by 2002:a63:991a:: with SMTP id d26-v6mr7640204pge.159.1536851409887; Thu, 13 Sep 2018 08:10:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536851409; cv=none; d=google.com; s=arc-20160816; b=aJOrca/8Wo0oSz0QIg2Wy8ZiWGONTj1n3CrExXFMT/bMWSlvqm0dB+SqSHPnTbsgiU ewg+sIVIU2FHrWH+bJlT5h86LL2E0b9BJViOeFNhPezOpDItdVR1r90jv0svOOXfYAE1 8zPXIlkFhnoaGJixfD6RJR+kBDA2IERWOYjP6DmBQf5A596+zMDZDCaJop3YvSzZT6fP FyEzb6z+xFwlN1lQ48Fbw+5e/W6Z3W/2n589ZusBplUGkYNRhctS6stGLNeZvDUl2IvM dcrCnFizNiwZ7kHMeonili/Oay3kD1vf+pFR8m1UfyEA2I4uqWXFUA4qOwPiaeGahGn6 1UKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=wP1Cv5qlIpxZoD0jpgC06E5+VuFTLKJCUlpMidXABbM=; b=j2ESb5sqF4RQBDhf0ZIo5+mYf5vJGxcXRBAst2XgW3dd93zhoAaJGKOjglNu4bGgk3 oyyWxoOvz/QuPuW4jIJjfGpV3c1b3pyrtYRkuJucQmM5J50qsyqenP+lLtqSmWfPZpyj oWmbvnXkms/9WOA1uoD2K3D9UMinVoE1JlyrigjNIfLlnBpf+8TsLdP1ShuwoVFvlDTn 08fC3b8MX2qhpata5jy4iLo7F6g1XqX01iKxaAn8u32CLAgCd3nt39T9+JiaXNew3eDT Jo6/8ohl/+f3IfSVnIeB12Dg/dubYldOkYditAWIpoBfh1xEK/Wev+YT3/uoXOzj8gow zOjA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 91-v6si4864655ple.169.2018.09.13.08.09.38; Thu, 13 Sep 2018 08:10:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728177AbeIMUTO (ORCPT + 99 others); Thu, 13 Sep 2018 16:19:14 -0400 Received: from smtp.ctxuk.citrix.com ([185.25.65.24]:28963 "EHLO SMTP.EU.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726824AbeIMUTO (ORCPT ); Thu, 13 Sep 2018 16:19:14 -0400 X-IronPort-AV: E=Sophos;i="5.53,369,1531785600"; d="scan'208";a="79013252" Date: Thu, 13 Sep 2018 17:08:00 +0200 From: Roger Pau =?utf-8?B?TW9ubsOp?= To: Valentin Vidic CC: , Jens Axboe , Konrad Rzeszutek Wilk , , , , Subject: Re: [DRBD-user] [PATCH] xen-blkback: Switch to closed state after releasing the backing device Message-ID: <20180913150800.haswzd7t2xccbgvl@mac.bytemobile.com> References: <20180907120337.GB11834@soda.linbit> <20180907121348.GM26705@gavran.carpriv.carnet.hr> <20180907132828.GC11834@soda.linbit> <20180907164500.GN26705@gavran.carpriv.carnet.hr> <20180907171459.GO26705@gavran.carpriv.carnet.hr> <20180908073432.GP26705@gavran.carpriv.carnet.hr> <20180910124531.GA31737@soda.linbit> <20180910132252.GE26705@gavran.carpriv.carnet.hr> <20180910150058.suxehc3uheyho4qx@mac.bytemobile.com> <20180910161831.GG26705@gavran.carpriv.carnet.hr> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180910161831.GG26705@gavran.carpriv.carnet.hr> User-Agent: NeoMutt/20180716 X-ClientProxiedBy: AMSPEX02CAS01.citrite.net (10.69.22.112) To AMSPEX02CL02.citrite.net (10.69.22.126) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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 Signed-off-by: Roger Pau Monn? --- 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