-#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;
}
{
if (l->keys_p != inline_keys)
kfree(l->keys_p);
- memset(l, 0, sizeof(*l));
}
static inline void bch2_keylist_push(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)
_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 */