1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _BCACHEFS_BTREE_KEY_CACHE_TYPES_H
3#define _BCACHEFS_BTREE_KEY_CACHE_TYPES_H
4
5struct btree_key_cache_freelist {
6 struct bkey_cached *objs[16];
7 unsigned nr;
8};
9
10struct btree_key_cache {
11 struct mutex lock;
12 struct rhashtable table;
13 bool table_init_done;
14
15 struct list_head freed_pcpu;
16 size_t nr_freed_pcpu;
17 struct list_head freed_nonpcpu;
18 size_t nr_freed_nonpcpu;
19
20 struct shrinker *shrink;
21 unsigned shrink_iter;
22 struct btree_key_cache_freelist __percpu *pcpu_freed;
23
24 atomic_long_t nr_freed;
25 atomic_long_t nr_keys;
26 atomic_long_t nr_dirty;
27};
28
29struct bkey_cached_key {
30 u32 btree_id;
31 struct bpos pos;
32} __packed __aligned(4);
33
34#endif /* _BCACHEFS_BTREE_KEY_CACHE_TYPES_H */
35

source code of linux/fs/bcachefs/btree_key_cache_types.h