Messages in this thread Patch in this message | | | From | Jakob Koschel <> | Subject | [PATCH v2] block: use dedicated list iterator variable | Date | Thu, 31 Mar 2022 11:12:18 +0200 |
| |
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/ [1] Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com> ---
v1->v2: - introduce blk_lookup_qe_pair() for more readable code (Bart Van Assche)
block/blk-mq.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c index e6f24fa4a4c2..f7f950cce452 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -4462,21 +4462,27 @@ 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 = blk_lookup_qe_pair(head, q); + struct elevator_type *t;
+ if (!qe) + return; + t = qe->type; list_del(&qe->node); kfree(qe);
base-commit: d888c83fcec75194a8a48ccd283953bdba7b2550 -- 2.25.1
| |