Message ID | 20250418163708.442085-4-ming.lei@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | block: unify elevator changing and fix lockdep warning | expand |
在 2025/04/19 0:36, Ming Lei 写道: > Both elevator_switch() and elevator_disable() are called from sysfs > store and updating nr_hw_queue code paths only. > > And in the two code paths, queue has been frozen already, so don't call > freeze queue in the two functions. > > Reviewed-by: Nilay Shroff <nilay@linux.ibm.com> > Signed-off-by: Ming Lei <ming.lei@redhat.com> > --- > block/elevator.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > LGTM Reviewed-by: Yu Kuai <yukuai3@huawei.com> > diff --git a/block/elevator.c b/block/elevator.c > index b4d08026b02c..5051a98dc08c 100644 > --- a/block/elevator.c > +++ b/block/elevator.c > @@ -615,12 +615,11 @@ void elevator_init_mq(struct request_queue *q) > */ > int elevator_switch(struct request_queue *q, struct elevator_type *new_e) > { > - unsigned int memflags; > int ret; > > + WARN_ON_ONCE(q->mq_freeze_depth == 0); > lockdep_assert_held(&q->elevator_lock); > > - memflags = blk_mq_freeze_queue(q); > blk_mq_quiesce_queue(q); > > if (q->elevator) { > @@ -641,7 +640,6 @@ int elevator_switch(struct request_queue *q, struct elevator_type *new_e) > > out_unfreeze: > blk_mq_unquiesce_queue(q); > - blk_mq_unfreeze_queue(q, memflags); > > if (ret) { > pr_warn("elv: switch to \"%s\" failed, falling back to \"none\"\n", > @@ -653,11 +651,9 @@ int elevator_switch(struct request_queue *q, struct elevator_type *new_e) > > void elevator_disable(struct request_queue *q) > { > - unsigned int memflags; > - > + WARN_ON_ONCE(q->mq_freeze_depth == 0); > lockdep_assert_held(&q->elevator_lock); > > - memflags = blk_mq_freeze_queue(q); > blk_mq_quiesce_queue(q); > > elv_unregister_queue(q); > @@ -668,7 +664,6 @@ void elevator_disable(struct request_queue *q) > blk_add_trace_msg(q, "elv switch: none"); > > blk_mq_unquiesce_queue(q); > - blk_mq_unfreeze_queue(q, memflags); > } > > /* >
diff --git a/block/elevator.c b/block/elevator.c index b4d08026b02c..5051a98dc08c 100644 --- a/block/elevator.c +++ b/block/elevator.c @@ -615,12 +615,11 @@ void elevator_init_mq(struct request_queue *q) */ int elevator_switch(struct request_queue *q, struct elevator_type *new_e) { - unsigned int memflags; int ret; + WARN_ON_ONCE(q->mq_freeze_depth == 0); lockdep_assert_held(&q->elevator_lock); - memflags = blk_mq_freeze_queue(q); blk_mq_quiesce_queue(q); if (q->elevator) { @@ -641,7 +640,6 @@ int elevator_switch(struct request_queue *q, struct elevator_type *new_e) out_unfreeze: blk_mq_unquiesce_queue(q); - blk_mq_unfreeze_queue(q, memflags); if (ret) { pr_warn("elv: switch to \"%s\" failed, falling back to \"none\"\n", @@ -653,11 +651,9 @@ int elevator_switch(struct request_queue *q, struct elevator_type *new_e) void elevator_disable(struct request_queue *q) { - unsigned int memflags; - + WARN_ON_ONCE(q->mq_freeze_depth == 0); lockdep_assert_held(&q->elevator_lock); - memflags = blk_mq_freeze_queue(q); blk_mq_quiesce_queue(q); elv_unregister_queue(q); @@ -668,7 +664,6 @@ void elevator_disable(struct request_queue *q) blk_add_trace_msg(q, "elv switch: none"); blk_mq_unquiesce_queue(q); - blk_mq_unfreeze_queue(q, memflags); } /*