Skip to content

Commit

Permalink
block: cleanup elevator_get
Browse files Browse the repository at this point in the history
Do the request_module and repeated lookup in the only caller that cares,
pick a saner name that explains where are actually doing a lookup and
use a sane calling conventions that passes the queue first.

Signed-off-by: Christoph Hellwig <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Christoph Hellwig authored and axboe committed Nov 1, 2022
1 parent eb5bca7 commit 81eaca4
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions block/elevator.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,24 +132,15 @@ static struct elevator_type *elevator_find(const char *name,
return NULL;
}

static struct elevator_type *elevator_get(struct request_queue *q,
const char *name, bool try_loading)
static struct elevator_type *elevator_find_get(struct request_queue *q,
const char *name)
{
struct elevator_type *e;

spin_lock(&elv_list_lock);

e = elevator_find(name, q->required_elevator_features);
if (!e && try_loading) {
spin_unlock(&elv_list_lock);
request_module("%s-iosched", name);
spin_lock(&elv_list_lock);
e = elevator_find(name, q->required_elevator_features);
}

if (e && !elevator_tryget(e))
e = NULL;

spin_unlock(&elv_list_lock);
return e;
}
Expand Down Expand Up @@ -634,7 +625,7 @@ static struct elevator_type *elevator_get_default(struct request_queue *q)
!blk_mq_is_shared_tags(q->tag_set->flags))
return NULL;

return elevator_get(q, "mq-deadline", false);
return elevator_find_get(q, "mq-deadline");
}

/*
Expand Down Expand Up @@ -757,9 +748,13 @@ static int elevator_change(struct request_queue *q, const char *elevator_name)
if (q->elevator && elevator_match(q->elevator->type, elevator_name, 0))
return 0;

e = elevator_get(q, elevator_name, true);
if (!e)
return -EINVAL;
e = elevator_find_get(q, elevator_name);
if (!e) {
request_module("%s-iosched", elevator_name);
e = elevator_find_get(q, elevator_name);
if (!e)
return -EINVAL;
}
ret = elevator_switch(q, e);
elevator_put(e);
return ret;
Expand Down

0 comments on commit 81eaca4

Please sign in to comment.