|
@@ -70,21 +70,10 @@ void __closure_wake_up(struct closure_waitlist *wait_list)
|
|
|
list = llist_del_all(&wait_list->list);
|
|
|
|
|
|
/* We first reverse the list to preserve FIFO ordering and fairness */
|
|
|
-
|
|
|
- while (list) {
|
|
|
- struct llist_node *t = list;
|
|
|
- list = llist_next(list);
|
|
|
-
|
|
|
- t->next = reverse;
|
|
|
- reverse = t;
|
|
|
- }
|
|
|
+ reverse = llist_reverse_order(list);
|
|
|
|
|
|
/* Then do the wakeups */
|
|
|
-
|
|
|
- while (reverse) {
|
|
|
- cl = container_of(reverse, struct closure, list);
|
|
|
- reverse = llist_next(reverse);
|
|
|
-
|
|
|
+ llist_for_each_entry(cl, reverse, list) {
|
|
|
closure_set_waiting(cl, 0);
|
|
|
closure_sub(cl, CLOSURE_WAITING + 1);
|
|
|
}
|