block: check for an unchanged elevator earlier in __elevator_change
authorJinlong Chen <nickyc975@zju.edu.cn>
Thu, 20 Oct 2022 06:48:18 +0000 (08:48 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 24 Oct 2022 00:59:17 +0000 (18:59 -0600)
No need to find the actual elevator_type struct for this comparism,
the name is all that is needed.

Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
[hch: split from a larger patch]
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20221020064819.1469928-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/elevator.c

index 5b8fb87..61d5655 100644 (file)
@@ -751,16 +751,13 @@ static int elevator_change(struct request_queue *q, const char *elevator_name)
                return elevator_switch(q, NULL);
        }
 
+       if (q->elevator && elevator_match(q->elevator->type, elevator_name, 0))
+               return 0;
+
        e = elevator_get(q, elevator_name, true);
        if (!e)
                return -EINVAL;
 
-       if (q->elevator &&
-           elevator_match(q->elevator->type, elevator_name, 0)) {
-               elevator_put(e);
-               return 0;
-       }
-
        return elevator_switch(q, e);
 }