aboutsummaryrefslogtreecommitdiffstats
diff options
authorNilay Shroff <nilay@linux.ibm.com>2025-05-15 19:14:39 +0530
committerJens Axboe <axboe@kernel.dk>2025-05-15 12:14:18 -0600
commit532b9e11b8540eb543ebec9cba851c5691e10b5b (patch)
tree9e798fc6aea5ea032c907f27246478c764b9ef0c
parentdbc5ba08ec5ff799a32f27ac79702a2cfc2200cd (diff)
downloadipsec-532b9e11b8540eb543ebec9cba851c5691e10b5b.tar.gz
block: fix elv_update_nr_hw_queues() to reattach elevator
When nr_hw_queues is updated, the elevator needs to be switched to ensure that we exit elevator and reattach it to ensure that hctx-> sched_tags is correctly allocated for the new hardware queues. However, elv_update_nr_hw_queues() currently only switches the elevator if the queue is not registered. This is incorrect, as it prevents reattaching the elevator after updating nr_hw_queues, which in turn inhibits allocation of sched_tags. Fix this by allowing the elevator switch if the queue is registered, ensuring proper reattachment and resource allocation. Fixes: 596dce110b7d ("block: simplify elevator reattachment for updating nr_hw_queues") Signed-off-by: Nilay Shroff <nilay@linux.ibm.com> Link: https://lore.kernel.org/r/20250515134511.548270-1-nilay@linux.ibm.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--block/elevator.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/elevator.c b/block/elevator.c
index f8d72bd2061030..ab22542e6cf0d1 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -697,7 +697,7 @@ void elv_update_nr_hw_queues(struct request_queue *q)
WARN_ON_ONCE(q->mq_freeze_depth == 0);
mutex_lock(&q->elevator_lock);
- if (q->elevator && !blk_queue_dying(q) && !blk_queue_registered(q)) {
+ if (q->elevator && !blk_queue_dying(q) && blk_queue_registered(q)) {
ctx.name = q->elevator->type->elevator_name;
/* force to reattach elevator after nr_hw_queue is updated */