Commit b89241e8 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Linus Torvalds

llists: move llist_reverse_order from raid5 to llist.c

Make this useful helper available for other users.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Neil Brown <neilb@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent ca5ecd64
...@@ -293,20 +293,6 @@ static void __release_stripe(struct r5conf *conf, struct stripe_head *sh) ...@@ -293,20 +293,6 @@ static void __release_stripe(struct r5conf *conf, struct stripe_head *sh)
do_release_stripe(conf, sh); do_release_stripe(conf, sh);
} }
static struct llist_node *llist_reverse_order(struct llist_node *head)
{
struct llist_node *new_head = NULL;
while (head) {
struct llist_node *tmp = head;
head = head->next;
tmp->next = new_head;
new_head = tmp;
}
return new_head;
}
/* should hold conf->device_lock already */ /* should hold conf->device_lock already */
static int release_stripe_list(struct r5conf *conf) static int release_stripe_list(struct r5conf *conf)
{ {
......
...@@ -195,4 +195,6 @@ static inline struct llist_node *llist_del_all(struct llist_head *head) ...@@ -195,4 +195,6 @@ static inline struct llist_node *llist_del_all(struct llist_head *head)
extern struct llist_node *llist_del_first(struct llist_head *head); extern struct llist_node *llist_del_first(struct llist_head *head);
struct llist_node *llist_reverse_order(struct llist_node *head);
#endif /* LLIST_H */ #endif /* LLIST_H */
...@@ -81,3 +81,25 @@ struct llist_node *llist_del_first(struct llist_head *head) ...@@ -81,3 +81,25 @@ struct llist_node *llist_del_first(struct llist_head *head)
return entry; return entry;
} }
EXPORT_SYMBOL_GPL(llist_del_first); EXPORT_SYMBOL_GPL(llist_del_first);
/**
* llist_reverse_order - reverse order of a llist chain
* @head: first item of the list to be reversed
*
* Reverse the oder of a chain of llist entries and return the
* new first entry.
*/
struct llist_node *llist_reverse_order(struct llist_node *head)
{
struct llist_node *new_head = NULL;
while (head) {
struct llist_node *tmp = head;
head = head->next;
tmp->next = new_head;
new_head = tmp;
}
return new_head;
}
EXPORT_SYMBOL_GPL(llist_reverse_order);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment