Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp3639728imm; Wed, 5 Sep 2018 03:38:24 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYPB8O578dzH3j4TwSec0SDaSAL/FuLVNgvXy11p0p0VHn1BYUrr8ZJPJDjRRn+YOrw/CCm X-Received: by 2002:a65:448a:: with SMTP id l10-v6mr36266082pgq.382.1536143904053; Wed, 05 Sep 2018 03:38:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536143904; cv=none; d=google.com; s=arc-20160816; b=tQTOJqUV8KWfveODGEra62WLQRe+85wZePLi+0+MaaDB00NWbibm+SjbMZZwsi79Ox 9LIffwqH8AR9LI4iMX/pHAuzik8m6jC7VnPv3k9ttggYM8rK5DBXt5TzCvav8pVLtBoA nPTzU4uBAmYwJoHERC2nqxMbLWqtJez9rH6ku/M6ghBeSI8Ly/ho5CyMz45TdGr4XRND wZfzMV2f3LqAb/65rXnhG8/tpzNt4nBaVtx3NbMudRsFaZUPpx1fmWfetwtAHTytu3Bo luVAAA52m8zUR7GDUJ5Bx35KgNA071Vaj2//qgEbpM5URuPXWotYyMoILNhHgPAffCqX 6AJA== 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-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=JJlgFJgzNAG1wgN1o0lrXXW468IPau163U8r0bGv7OE=; b=FvZUHEQKCcfk3cKRpSVBnaJVe7xf7QJcKvp/ZOZOlsI0d030rCm48M/gnhdYmuW5tI qr+Zh8M7c0zWdDkhcJVuN4HH4TnzeYOpiKXKZEpesOz0pzp95+alTkK+pDuDUCr0Z+lm XKdNndIWpkOIVuutVeAHmdQOF40ER+Rqtm7uYGKn1pocVBKF/hE+LFr0zO3fnSFVWV7d +cBIGrELJgVorhkyHcbnm/AO6Z9lymfx/VB3uf4MKwnWlJKDUX7JcqKRcsLvIhgSWzuU 1zK/2AlgY+3wReNdpmbBeGwZ8EQrL786p2CwTkUBlk1XbYyJp7ntIobtSPko0RPatAio 5gkg== 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 d81-v6si1772316pfm.226.2018.09.05.03.38.09; Wed, 05 Sep 2018 03:38:24 -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 S1727810AbeIEPGe (ORCPT + 99 others); Wed, 5 Sep 2018 11:06:34 -0400 Received: from smtp.eu.citrix.com ([185.25.65.24]:9054 "EHLO SMTP.EU.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727100AbeIEPGe (ORCPT ); Wed, 5 Sep 2018 11:06:34 -0400 X-IronPort-AV: E=Sophos;i="5.53,333,1531785600"; d="scan'208";a="78572978" Date: Wed, 5 Sep 2018 12:36:49 +0200 From: Roger Pau =?utf-8?B?TW9ubsOp?= To: Valentin Vidic CC: Konrad Rzeszutek Wilk , Jens Axboe , , , , Subject: Re: [PATCH] xen-blkback: Switch to closed state after releasing the backing device Message-ID: <20180905103649.edugijsjx4v2fbxd@mac.bytemobile.com> References: <20180829065214.23546-1-Valentin.Vidic@CARNet.hr> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20180829065214.23546-1-Valentin.Vidic@CARNet.hr> User-Agent: NeoMutt/20180716 X-ClientProxiedBy: AMSPEX02CAS02.citrite.net (10.69.22.113) 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 Wed, Aug 29, 2018 at 08:52:14AM +0200, Valentin Vidic wrote: > Switching to closed state earlier can cause the block-drbd > script to fail with 'Device is held open by someone': > > root: /etc/xen/scripts/block-drbd: remove XENBUS_PATH=backend/vbd/6/51712 > kernel: [ 2222.278235] block drbd6: State change failed: Device is held open by someone > kernel: [ 2222.278304] block drbd6: state = { cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate r----- } > kernel: [ 2222.278340] block drbd6: wanted = { cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate r----- } > root: /etc/xen/scripts/block-drbd: Writing backend/vbd/6/51712/hotplug-error /etc/xen/scripts/block-drbd failed; error detected. backend/vbd/6/51712/hotplug-status error to xenstore. > root: /etc/xen/scripts/block-drbd: /etc/xen/scripts/block-drbd failed; error detected. > > Signed-off-by: Valentin Vidic > Cc: stable@vger.kernel.org > --- > drivers/block/xen-blkback/xenbus.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c > index a4bc74e72c39..43bddc996709 100644 > --- a/drivers/block/xen-blkback/xenbus.c > +++ b/drivers/block/xen-blkback/xenbus.c > @@ -323,6 +323,7 @@ static void xen_blkif_free(struct xen_blkif *blkif) > { > WARN_ON(xen_blkif_disconnect(blkif)); > xen_vbd_free(&blkif->vbd); > + xenbus_switch_state(blkif->be->dev, XenbusStateClosed); > kfree(blkif->be->mode); > kfree(blkif->be); > > @@ -814,7 +815,6 @@ static void frontend_changed(struct xenbus_device *dev, > > case XenbusStateClosed: > xen_blkif_disconnect(be->blkif); > - xenbus_switch_state(dev, XenbusStateClosed); > if (xenbus_dev_is_online(dev)) > break; AFAICT, this will cause the backend to never switch to 'Closed' state until the toolstack sets online to 0, which is not good IMO. If for example a frontend decides to close a device, the backend will stay in state 'Closing' until the toolstack actually removes the disk by setting online to 0. This will prevent resetting blk connections, as blkback will refuse to switch to state XenbusStateInitWait unless it's at XenbusStateClosed (see the XenbusStateInitialising case in frontend_changed), which will never be reached with your patch. Maybe the easiest solution would be to wait in the block-drbd script until the device is released? Maybe using fstat in a loop or one of the drbd tools? Thanks, Roger.