block: use dedicated list iterator variable
authorJakob Koschel <jakobkoschel@gmail.com>
Thu, 31 Mar 2022 09:12:18 +0000 (11:12 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 31 Mar 2022 12:05:15 +0000 (06:05 -0600)
To move the list iterator variable into the list_for_each_entry_*()
macro in the future it should be avoided to use the list iterator
variable after the loop body.

To *never* use the list iterator variable after the loop it was
concluded to use a separate iterator variable instead of a
found boolean [1].

Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@mail.gmail.com/
Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com>
Link: https://lore.kernel.org/r/20220331091218.641532-1-jakobkoschel@gmail.com
[axboe: move lookup to where return value is checked]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c

index 213bb5979bed82e76d5d040ef06516e25288b81c..176b031510fffad3fba1e11ef243809a601ff453 100644 (file)
@@ -4448,21 +4448,28 @@ static bool blk_mq_elv_switch_none(struct list_head *head,
        return true;
 }
 
-static void blk_mq_elv_switch_back(struct list_head *head,
-               struct request_queue *q)
+static struct blk_mq_qe_pair *blk_lookup_qe_pair(struct list_head *head,
+                                               struct request_queue *q)
 {
        struct blk_mq_qe_pair *qe;
-       struct elevator_type *t = NULL;
 
        list_for_each_entry(qe, head, node)
-               if (qe->q == q) {
-                       t = qe->type;
-                       break;
-               }
+               if (qe->q == q)
+                       return qe;
 
-       if (!t)
-               return;
+       return NULL;
+}
 
+static void blk_mq_elv_switch_back(struct list_head *head,
+                                 struct request_queue *q)
+{
+       struct blk_mq_qe_pair *qe;
+       struct elevator_type *t;
+
+       qe = blk_lookup_qe_pair(head, q);
+       if (!qe)
+               return;
+       t = qe->type;
        list_del(&qe->node);
        kfree(qe);