Skip to content

Commit a3dc627

Browse files
Ming Leiaxboe
authored andcommitted
block: pass elevator_queue to elv_register_queue & unregister_queue
Pass elevator_queue reference to elv_register_queue() & elv_unregister_queue(). No functional change, and prepare for moving the two out of elevator lock & freezing queue, when we need to store the old & new elevator queue in `struct elv_change_ctx` instance, then both two can co-exist for short while, so we have to pass the exact elevator_queue instance to elv_register_queue & unregister_queue. Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Reviewed-by: Nilay Shroff <[email protected]> Signed-off-by: Ming Lei <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 1e44bed commit a3dc627

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

block/elevator.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -458,9 +458,10 @@ static const struct kobj_type elv_ktype = {
458458
.release = elevator_release,
459459
};
460460

461-
static int elv_register_queue(struct request_queue *q, bool uevent)
461+
static int elv_register_queue(struct request_queue *q,
462+
struct elevator_queue *e,
463+
bool uevent)
462464
{
463-
struct elevator_queue *e = q->elevator;
464465
int error;
465466

466467
lockdep_assert_held(&q->elevator_lock);
@@ -488,10 +489,9 @@ static int elv_register_queue(struct request_queue *q, bool uevent)
488489
return error;
489490
}
490491

491-
static void elv_unregister_queue(struct request_queue *q)
492+
static void elv_unregister_queue(struct request_queue *q,
493+
struct elevator_queue *e)
492494
{
493-
struct elevator_queue *e = q->elevator;
494-
495495
lockdep_assert_held(&q->elevator_lock);
496496

497497
if (e && test_and_clear_bit(ELEVATOR_FLAG_REGISTERED, &e->flags)) {
@@ -584,15 +584,15 @@ static int elevator_switch(struct request_queue *q, struct elv_change_ctx *ctx)
584584
blk_mq_quiesce_queue(q);
585585

586586
if (q->elevator) {
587-
elv_unregister_queue(q);
587+
elv_unregister_queue(q, q->elevator);
588588
elevator_exit(q);
589589
}
590590

591591
if (new_e) {
592592
ret = blk_mq_init_sched(q, new_e);
593593
if (ret)
594594
goto out_unfreeze;
595-
ret = elv_register_queue(q, !ctx->no_uevent);
595+
ret = elv_register_queue(q, q->elevator, !ctx->no_uevent);
596596
if (ret) {
597597
elevator_exit(q);
598598
goto out_unfreeze;

0 commit comments

Comments
 (0)