Message ID | 20241014005115.2699642-1-ming.lei@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | blk-mq: setup queue ->tag_set before initializing hctx | expand |
On Mon, Oct 14, 2024 at 08:51:15AM +0800, Ming Lei wrote: > Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx") Overly long line. Otherwise looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
On 14/10/2024 01:51, Ming Lei wrote: > Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx") > needs to check queue mapping via tag set in hctx's cpuhp handler. > > However, q->tag_set may not be setup yet when the cpuhp handler is > enabled, then kernel oops is triggered. > > Fix the issue by setup queue tag_set before initializing hctx. > > Reported-and-tested-by: Rick Koch<mr.rickkoch@gmail.com> > Closes:https://urldefense.com/v3/__https://lore.kernel.org/linux-block/ > CANa58eeNDozLaBHKPLxSAhEy__FPfJT_F71W=sEQw49UCrC9PQ@mail.gmail.com__;!! > ACWV5N9M2RV99hQ! > I8rs4BE3PAgb5C75MUXZygt6Rmrgq1Nf9gHkileqLC5dagKa9zQ7aaFcJDNZkQwwCAKyu0RXanbmTtnTcwOR$ > Fixes: 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx") > Signed-off-by: Ming Lei<ming.lei@redhat.com> > --- Reviewed-by: John Garry <john.g.garry@oracle.com>
On Mon, 14 Oct 2024 08:51:15 +0800, Ming Lei wrote: > Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx") > needs to check queue mapping via tag set in hctx's cpuhp handler. > > However, q->tag_set may not be setup yet when the cpuhp handler is > enabled, then kernel oops is triggered. > > Fix the issue by setup queue tag_set before initializing hctx. > > [...] Applied, thanks! [1/1] blk-mq: setup queue ->tag_set before initializing hctx commit: cd6279bd6e3c022bb74f88bd2299daf63ae519e6 Best regards,
diff --git a/block/blk-mq.c b/block/blk-mq.c index 4b2c8e940f59..cf626e061dd7 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -4310,6 +4310,12 @@ int blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, /* mark the queue as mq asap */ q->mq_ops = set->ops; + /* + * ->tag_set has to be setup before initialize hctx, which cpuphp + * handler needs it for checking queue mapping + */ + q->tag_set = set; + if (blk_mq_alloc_ctxs(q)) goto err_exit; @@ -4328,8 +4334,6 @@ int blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, INIT_WORK(&q->timeout_work, blk_mq_timeout_work); blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ); - q->tag_set = set; - q->queue_flags |= QUEUE_FLAG_MQ_DEFAULT; INIT_DELAYED_WORK(&q->requeue_work, blk_mq_requeue_work);
Commit 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx") needs to check queue mapping via tag set in hctx's cpuhp handler. However, q->tag_set may not be setup yet when the cpuhp handler is enabled, then kernel oops is triggered. Fix the issue by setup queue tag_set before initializing hctx. Reported-and-tested-by: Rick Koch <mr.rickkoch@gmail.com> Closes: https://lore.kernel.org/linux-block/CANa58eeNDozLaBHKPLxSAhEy__FPfJT_F71W=sEQw49UCrC9PQ@mail.gmail.com Fixes: 7b815817aa58 ("blk-mq: add helper for checking if one CPU is mapped to specified hctx") Signed-off-by: Ming Lei <ming.lei@redhat.com> --- block/blk-mq.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)