2023-11-14 02:44:14 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef _BCACHEFS_BTREE_KEY_CACHE_TYPES_H
|
|
|
|
#define _BCACHEFS_BTREE_KEY_CACHE_TYPES_H
|
|
|
|
|
|
|
|
struct btree_key_cache_freelist {
|
|
|
|
struct bkey_cached *objs[16];
|
|
|
|
unsigned nr;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct btree_key_cache {
|
|
|
|
struct mutex lock;
|
|
|
|
struct rhashtable table;
|
|
|
|
bool table_init_done;
|
2023-11-06 14:53:14 +00:00
|
|
|
|
2023-11-14 02:44:14 +00:00
|
|
|
struct list_head freed_pcpu;
|
2023-11-06 14:53:14 +00:00
|
|
|
size_t nr_freed_pcpu;
|
2023-11-14 02:44:14 +00:00
|
|
|
struct list_head freed_nonpcpu;
|
2023-11-06 14:53:14 +00:00
|
|
|
size_t nr_freed_nonpcpu;
|
|
|
|
|
2023-11-14 02:44:14 +00:00
|
|
|
struct shrinker *shrink;
|
|
|
|
unsigned shrink_iter;
|
|
|
|
struct btree_key_cache_freelist __percpu *pcpu_freed;
|
|
|
|
|
|
|
|
atomic_long_t nr_freed;
|
|
|
|
atomic_long_t nr_keys;
|
|
|
|
atomic_long_t nr_dirty;
|
2024-04-20 18:49:22 +00:00
|
|
|
|
|
|
|
/* shrinker stats */
|
|
|
|
unsigned long requested_to_free;
|
|
|
|
unsigned long freed;
|
|
|
|
unsigned long moved_to_freelist;
|
|
|
|
unsigned long skipped_dirty;
|
|
|
|
unsigned long skipped_accessed;
|
|
|
|
unsigned long skipped_lock_fail;
|
2023-11-14 02:44:14 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct bkey_cached_key {
|
|
|
|
u32 btree_id;
|
|
|
|
struct bpos pos;
|
|
|
|
} __packed __aligned(4);
|
|
|
|
|
|
|
|
#endif /* _BCACHEFS_BTREE_KEY_CACHE_TYPES_H */
|