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