]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/keylist.h
Update bcachefs sources to 717b356d1d bcachefs: Convert journal validation to bkey_in...
[bcachefs-tools-debian] / libbcachefs / keylist.h
index 66628058e141da3d633863bc49d1e486e3a2f2a3..fe759c7031e0403a0fe0da6d61b2c8432f819451 100644 (file)
@@ -1,14 +1,13 @@
-#ifndef _BCACHE_KEYLIST_H
-#define _BCACHE_KEYLIST_H
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _BCACHEFS_KEYLIST_H
+#define _BCACHEFS_KEYLIST_H
 
 #include "keylist_types.h"
 
 int bch2_keylist_realloc(struct keylist *, u64 *, size_t, size_t);
-void bch2_keylist_add_in_order(struct keylist *, struct bkey_i *);
 void bch2_keylist_pop_front(struct keylist *);
 
-static inline void bch2_keylist_init(struct keylist *l, u64 *inline_keys,
-                                   size_t nr_inline_u64s)
+static inline void bch2_keylist_init(struct keylist *l, u64 *inline_keys)
 {
        l->top_p = l->keys_p = inline_keys;
 }
@@ -17,7 +16,6 @@ static inline void bch2_keylist_free(struct keylist *l, u64 *inline_keys)
 {
        if (l->keys_p != inline_keys)
                kfree(l->keys_p);
-       memset(l, 0, sizeof(*l));
 }
 
 static inline void bch2_keylist_push(struct keylist *l)
@@ -36,14 +34,14 @@ static inline bool bch2_keylist_empty(struct keylist *l)
        return l->top == l->keys;
 }
 
-static inline size_t bch_keylist_u64s(struct keylist *l)
+static inline size_t bch2_keylist_u64s(struct keylist *l)
 {
        return l->top_p - l->keys_p;
 }
 
 static inline size_t bch2_keylist_bytes(struct keylist *l)
 {
-       return bch_keylist_u64s(l) * sizeof(u64);
+       return bch2_keylist_u64s(l) * sizeof(u64);
 }
 
 static inline struct bkey_i *bch2_keylist_front(struct keylist *l)
@@ -56,7 +54,21 @@ static inline struct bkey_i *bch2_keylist_front(struct keylist *l)
             _k != (_keylist)->top;                             \
             _k = bkey_next(_k))
 
-#define keylist_single(k)                                      \
-       ((struct keylist) { .keys = k, .top = bkey_next(k) })
+static inline u64 keylist_sectors(struct keylist *keys)
+{
+       struct bkey_i *k;
+       u64 ret = 0;
+
+       for_each_keylist_key(keys, k)
+               ret += k->k.size;
+
+       return ret;
+}
+
+#ifdef CONFIG_BCACHEFS_DEBUG
+void bch2_verify_keylist_sorted(struct keylist *);
+#else
+static inline void bch2_verify_keylist_sorted(struct keylist *l) {}
+#endif
 
-#endif /* _BCACHE_KEYLIST_H */
+#endif /* _BCACHEFS_KEYLIST_H */