Commit 81eaca44 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: cleanup elevator_get



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: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221030100714.876891-3-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent eb5bca73
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -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;
}
@@ -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");
}

/*
@@ -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);
	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;