X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libbcachefs%2Fkeylist.h;h=fe759c7031e0403a0fe0da6d61b2c8432f819451;hb=8642d4ae10f167a2eb850403f6d2b60757242b31;hp=b7c8a861e537e4ec2b247c27c079f7d68c6378f4;hpb=ea83a3985d28372d56ec7cea6e73907551869f63;p=bcachefs-tools-debian diff --git a/libbcachefs/keylist.h b/libbcachefs/keylist.h index b7c8a86..fe759c7 100644 --- a/libbcachefs/keylist.h +++ b/libbcachefs/keylist.h @@ -1,10 +1,10 @@ +/* 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) @@ -16,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); - bch2_keylist_init(l, inline_keys); } static inline void bch2_keylist_push(struct keylist *l) @@ -35,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) @@ -55,8 +54,16 @@ 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 *);