/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _BCACHEFS_BTREE_KEY_CACHE_TYPES_H #define _BCACHEFS_BTREE_KEY_CACHE_TYPES_H #include "rcu_pending.h" struct btree_key_cache { struct rhashtable table; bool table_init_done; struct shrinker *shrink; unsigned shrink_iter; /* 0: non pcpu reader locks, 1: pcpu reader locks */ struct rcu_pending pending[2]; size_t __percpu *nr_pending; atomic_long_t nr_keys; atomic_long_t nr_dirty; /* shrinker stats */ unsigned long requested_to_free; unsigned long freed; unsigned long skipped_dirty; unsigned long skipped_accessed; unsigned long skipped_lock_fail; }; struct bkey_cached_key { u32 btree_id; struct bpos pos; } __packed __aligned(4); #endif /* _BCACHEFS_BTREE_KEY_CACHE_TYPES_H */