From: Ming Lei <ming.lei@redhat.com>
To: Hou Tao <houtao1@huawei.com>
Cc: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org
Subject: Re: [PATCH] block: check the existence of tags[hctx_idx] in blk_mq_clear_rq_mapping()
Date: Mon, 13 Sep 2021 09:43:59 +0800 [thread overview]
Message-ID: <YT6s35QwBSiFJ1Ko@T590> (raw)
In-Reply-To: <96dd1720-343f-64db-42e9-788baec4b466@huawei.com>
On Thu, Sep 09, 2021 at 07:14:20PM +0800, Hou Tao wrote:
> Hi,
>
> On 9/9/2021 5:19 PM, Ming Lei wrote:
> > Hello Hou,
> >
> > On Thu, Sep 09, 2021 at 05:00:54PM +0800, Hou Tao wrote:
> >> According to commit 4412efecf7fd ("Revert "blk-mq: remove code for
> >> dealing with remapping queue""), for some devices queue hctx may not
> >> being mapped, and tagset->tags[hctx_idx] will be released and be NULL.
> >>
> >> If an IO scheduler is used on these devices, blk_mq_clear_rq_mapping()
> >> will be called for all hctxs in blk_mq_sched_free_requests() during
> >> scheduler switch, and these will be oops. So checking the existence of
> >> tags[hctx_idx] before going on in blk_mq_clear_rq_mapping().
> > unmapped hctx should be caused by blk_mq_update_nr_hw_queues() only,
> > but scheduler tags is updated there too, so not sure it is one real
> > issue, did you observe such kernel panic? any kernel log?
> Not a real issue, just find the potential "problem" during code review.
>
> But is the case below possible ?
> There is an unmapped hctx and a freed tags[hctx_idx] after
> blk_mq_update_nr_hw_queues(), and IO scheduler is used. When
> switching IO scheduler to none, the previous schedule tag
> on each hctx will be freed in blk_mq_sched_free_requests().
> blk_mq_sched_free_requests() will call blk_mq_free_rqs(), and
>
> blk_mq_free_rqs() will access the NULLed tags[hctx_idx].
It isn't possible. One invariant is that the first 'q->nr_hw_queues'
elements of ->queue_hw_ctx[] / ->tags[] are valid and the others are
freed after blk_mq_update_nr_hw_queues() returns.
thanks,
Ming
prev parent reply other threads:[~2021-09-13 1:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-09 9:00 [PATCH] block: check the existence of tags[hctx_idx] in blk_mq_clear_rq_mapping() Hou Tao
2021-09-09 9:19 ` Ming Lei
2021-09-09 11:14 ` Hou Tao
2021-09-13 1:43 ` Ming Lei [this message]
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=YT6s35QwBSiFJ1Ko@T590 \
--to=ming.lei@redhat.com \
--cc=axboe@kernel.dk \
--cc=houtao1@huawei.com \
--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.