X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libbcachefs%2Fkeylist.h;h=fe759c7031e0403a0fe0da6d61b2c8432f819451;hb=8642d4ae10f167a2eb850403f6d2b60757242b31;hp=66628058e141da3d633863bc49d1e486e3a2f2a3;hpb=5ec39af8eaba49aee7bafa44c661da39e2f40dc3;p=bcachefs-tools-debian diff --git a/libbcachefs/keylist.h b/libbcachefs/keylist.h index 6662805..fe759c7 100644 --- a/libbcachefs/keylist.h +++ b/libbcachefs/keylist.h @@ -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 */