llists: move llist_reverse_order from raid5 to llist.c
Make this useful helper available for other users. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jan Kara <jack@suse.cz> Cc: Jens Axboe <axboe@kernel.dk> Cc: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ca5ecd64c2
commit
b89241e8cd
|
@ -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)
|
||||||
|
|
||||||
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 */
|
||||||
|
|
22
lib/llist.c
22
lib/llist.c
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue