summaryrefslogtreecommitdiff
path: root/include/linux/list.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-12-04 13:41:49 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2020-12-04 13:45:33 -0500
commitdb931a4571817d7d61be6bce306f1d42f7cd3398 (patch)
treec1ac421486b5f85b487e82ab2b4de47608110c33 /include/linux/list.h
parentd7fdc2b61e57985a4611ec3a591c002427e093d9 (diff)
Update bcachefs sources to e1d0fb8c5f bcachefs: Don't require flush/fua on every journal write
Diffstat (limited to 'include/linux/list.h')
-rw-r--r--include/linux/list.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/linux/list.h b/include/linux/list.h
index 4a317090..3639dc99 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -26,7 +26,6 @@
#define list_for_each_entry(p, h, m) cds_list_for_each_entry(p, h, m)
#define list_for_each_entry_reverse(p, h, m) cds_list_for_each_entry_reverse(p, h, m)
#define list_for_each_entry_safe(p, n, h, m) cds_list_for_each_entry_safe(p, n, h, m)
-#define list_for_each_entry_safe_reverse(p, n, h, m) cds_list_for_each_entry_safe_reverse(p, n, h, m)
static inline int list_empty_careful(const struct list_head *head)
{
@@ -54,6 +53,15 @@ static inline void list_splice_init(struct list_head *list,
#define list_first_entry_or_null(ptr, type, member) \
(!list_empty(ptr) ? list_first_entry(ptr, type, member) : NULL)
+#define list_prev_entry(pos, member) \
+ list_entry((pos)->member.prev, typeof(*(pos)), member)
+
+#define list_for_each_entry_safe_reverse(pos, n, head, member) \
+ for (pos = list_last_entry(head, typeof(*pos), member), \
+ n = list_prev_entry(pos, member); \
+ &pos->member != (head); \
+ pos = n, n = list_prev_entry(n, member))
+
/* hlists: */
#include <urcu/hlist.h>