Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1105018imm; Thu, 6 Sep 2018 15:40:55 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZfJeNLkL5xAFQuXMZe8O4Ufqd08hkY246WFBIAhmcpUYUX5bJzZYh5yIYCAs0YUk6u+e+B X-Received: by 2002:a63:6fca:: with SMTP id k193-v6mr5033381pgc.360.1536273655890; Thu, 06 Sep 2018 15:40:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536273655; cv=none; d=google.com; s=arc-20160816; b=qPTlYS9TY2Ays1ed3qz+rOucTO3qD+zbz2QxIZ00F9ExgLgiX03NXqgGNGJe6WtvmF glUePRAqt4d5VaWvuHU0GiWH/NSCWAXq0PP8p49qAYemToEzH+xQv7WjVgDPKqpK5Ro2 2LDkf6L/+3lToJYWVvB27krG9mADqtB91ZeskxRZffXLflcq1WWEAeuIbIpEG7WVqhVe Ee1K9XuJRH4AmVtc717jhBm/pZ6gZf9gvwbyKtk2hhABdjgUOF/EeFNE89fsH9y1HlDP 3Ve8Z6SMYQfZm6oU1dxPjz/mXiTQRkkuvCwv001e6tzOxjc8ZiQcS/IwLoNMQpVMg0tz rfyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:cc:to:from:date; bh=YBC/Y1hh0Nkl6tXWEjAeprC3Rj2CUCpW7BfGbype62I=; b=f+ezl00FlJ5dSYGYCTtiX9rJ+CLvi7L9zSLDYxvP6Qu617ZUbdkvxyDyndLXR7PeJx HEnKSb0mn7wHWH99ZcwZLQlDgYgwF2RJQxtFc6Olb49Ylr/v6+a8OLuaaaozSu3pw0/P zEMMoksn50DoOpV7zELAyUxX9k9kDCjXUPBtqLNFWJXmr2mz/6ZXoM9/vHWmASabm/9C CQlJ/uT8JTeGPjgUjnt+6RXol6R4X3UCHgLfQtaYuuPGmO2szuHMQmrW4iohYUpwZ1RQ 1mCh5dTfwvOs1ozBLkPp7uDBmIvUzU56JMpjFl4ihNfwgVVFp4+QJPgE3svGI5CszEji OvGA== 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 k135-v6si6479631pfd.80.2018.09.06.15.40.40; Thu, 06 Sep 2018 15:40:55 -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 S1728551AbeIGC5K (ORCPT + 99 others); Thu, 6 Sep 2018 22:57:10 -0400 Received: from mail.CARNet.hr ([161.53.123.6]:49517 "EHLO mail.carnet.hr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727261AbeIGC5K (ORCPT ); Thu, 6 Sep 2018 22:57:10 -0400 Received: from cnzgrivvl-t440p.carpriv.carnet.hr ([161.53.12.131]:58854 helo=gavran.carpriv.carnet.hr) by mail.carnet.hr with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1fy2cb-0008Fm-Iu; Fri, 07 Sep 2018 00:19:30 +0200 Received: by gavran.carpriv.carnet.hr (Postfix, from userid 1000) id 57B93201A2; Fri, 7 Sep 2018 00:19:29 +0200 (CEST) Date: Fri, 7 Sep 2018 00:19:29 +0200 From: Valentin Vidic To: Roger Pau =?iso-8859-1?Q?Monn=E9?= Cc: Konrad Rzeszutek Wilk , Jens Axboe , xen-devel@lists.xenproject.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, drbd-user@lists.linbit.com Message-ID: <20180906221929.GZ26705@gavran.carpriv.carnet.hr> References: <20180829065214.23546-1-Valentin.Vidic@CARNet.hr> <20180905103649.edugijsjx4v2fbxd@mac.bytemobile.com> <20180905113515.GU26705@gavran.carpriv.carnet.hr> <20180905162801.GB26705@gavran.carpriv.carnet.hr> <20180906162932.7qge5dmrgyqbmbbj@mac.bytemobile.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180906162932.7qge5dmrgyqbmbbj@mac.bytemobile.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-SA-Exim-Connect-IP: 161.53.12.131 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on rigel.CARNet.hr X-Spam-Level: X-Spam-Status: No, score=-2.9 required=10.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.2 Subject: Re: [PATCH] xen-blkback: Switch to closed state after releasing the backing device X-SA-Exim-Version: 4.2.1 (built Mon, 26 Dec 2011 16:24:06 +0000) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 06, 2018 at 06:29:32PM +0200, Roger Pau Monn? wrote: > On Wed, Sep 05, 2018 at 06:28:01PM +0200, Valentin Vidic wrote: > > On Wed, Sep 05, 2018 at 01:35:15PM +0200, Valentin Vidic wrote: > > > > 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. > > > > Would it be possible to call xen_vbd_free before the state change? > > > > case XenbusStateClosed: > > xen_blkif_disconnect(be->blkif); > > xen_vbd_free(&be->blkif->vbd); > > xenbus_switch_state(dev, XenbusStateClosed); > > I think that will break reconnection, since xen_vbd_create is only > called after hotplug script execution is performed (which happens only > once at device attachment), but not when DomU changes frontend > state. > > If you want to perform this xen_vbd_free you will also have to move > the xen_vbd_create call AFAICT, to a place that's also called when > reconnecting a device. Note that I could be wrong, so it might be > worth a shot to try different approaches since the blkback code is > quite tangled and I might miss something. It seems like the Closed state is not a good point to call the remove script since the device could go back from Closed to Connected. Maybe it would help to introduce a new final state (7 = XenbusStateFree or XenbusStateRemove) that would be set after xen_vbd_free to let the userspace know it is safe to run the remove script? 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, XenbusStateFree); kfree(blkif->be->mode); kfree(blkif->be); /* Make sure everything is drained before shutting down */ kmem_cache_free(xen_blkif_cachep, blkif); } -- Valentin