From: Ming Lei <ming.lei@redhat.com>
To: Christoph Hellwig <hch@lst.de>
Cc: axboe@kernel.dk, linux-block@vger.kernel.org, ming.lei@redhat.com
Subject: Re: [PATCH 1/2] block: call blk_mq_exit_queue from disk_release for never added disks
Date: Mon, 18 Jul 2022 15:18:52 +0800 [thread overview]
Message-ID: <YtUJXGhFBw5yrf7N@T590> (raw)
In-Reply-To: <20220718062928.335399-1-hch@lst.de>
On Mon, Jul 18, 2022 at 08:29:27AM +0200, Christoph Hellwig wrote:
> To undo the all initialization from blk_mq_init_allocated_queue in case
> of a probe failure where add_disk is never called we have to call
> blk_mq_exit_queue from put_disk.
>
> We should be doing this in general, but can't do it for the normal
> teardown case (yet) as the tagset can be gone by the time the disk is
> released once it was added. I hope to sort this out properly eventual
> but for now this isolated hack will do it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> block/genhd.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/block/genhd.c b/block/genhd.c
> index 44dfcf67ed96a..ad8a3678d4480 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -1138,6 +1138,18 @@ static void disk_release(struct device *dev)
> might_sleep();
> WARN_ON_ONCE(disk_live(disk));
>
> + /*
> + * To undo the all initialization from blk_mq_init_allocated_queue in
> + * case of a probe failure where add_disk is never called we have to
> + * call blk_mq_exit_queue here. We can't do this for the more common
> + * teardown case (yet) as the tagset can be gone by the time the disk
> + * is released once it was added.
> + */
> + if (queue_is_mq(disk->queue) &&
> + test_bit(GD_OWNS_QUEUE, &disk->state) &&
> + !test_bit(GD_ADDED, &disk->state))
> + blk_mq_exit_queue(disk->queue);
> +
Request queue is allocated successfully, but disk allocation may fail,
so blk_mq_exit_queue still may be missed in this case.
thanks,
Ming
next prev parent reply other threads:[~2022-07-18 7:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-18 6:29 [PATCH 1/2] block: call blk_mq_exit_queue from disk_release for never added disks Christoph Hellwig
2022-07-18 6:29 ` [PATCH 2/2] Revert "ublk_drv: fix request queue leak" Christoph Hellwig
2022-07-19 12:37 ` Ming Lei
2022-07-20 6:07 ` Christoph Hellwig
2022-07-20 7:47 ` Ming Lei
2022-07-20 9:00 ` Christoph Hellwig
2022-07-20 10:16 ` Ming Lei
2022-07-20 10:23 ` Ming Lei
2022-07-20 13:08 ` Christoph Hellwig
2022-07-20 15:33 ` Ming Lei
2022-07-21 5:12 ` Christoph Hellwig
2022-07-18 7:18 ` Ming Lei [this message]
2022-07-18 8:33 ` [PATCH 1/2] block: call blk_mq_exit_queue from disk_release for never added disks Ming Lei
2022-07-18 13:08 ` Christoph Hellwig
2022-07-18 13:07 ` Christoph Hellwig
2022-07-18 15:16 ` Ming Lei
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=YtUJXGhFBw5yrf7N@T590 \
--to=ming.lei@redhat.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=linux-block@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.