Commit | Line | Data |
---|---|---|
2ca88e5a KO |
1 | #ifndef _BCACHEFS_BTREE_KEY_CACHE_H |
2 | #define _BCACHEFS_BTREE_KEY_CACHE_H | |
3 | ||
8a92e545 KO |
4 | static inline size_t bch2_nr_btree_keys_need_flush(struct bch_fs *c) |
5 | { | |
331194a2 KO |
6 | size_t nr_dirty = atomic_long_read(&c->btree_key_cache.nr_dirty); |
7 | size_t nr_keys = atomic_long_read(&c->btree_key_cache.nr_keys); | |
f51e84fe | 8 | size_t max_dirty = 1024 + nr_keys / 2; |
8a92e545 KO |
9 | |
10 | return max_t(ssize_t, 0, nr_dirty - max_dirty); | |
11 | } | |
12 | ||
d5425a3b KO |
13 | static inline bool bch2_btree_key_cache_must_wait(struct bch_fs *c) |
14 | { | |
331194a2 KO |
15 | size_t nr_dirty = atomic_long_read(&c->btree_key_cache.nr_dirty); |
16 | size_t nr_keys = atomic_long_read(&c->btree_key_cache.nr_keys); | |
d5425a3b KO |
17 | size_t max_dirty = 4096 + (nr_keys * 3) / 4; |
18 | ||
e323edd6 KO |
19 | return nr_dirty > max_dirty && |
20 | test_bit(JOURNAL_RECLAIM_STARTED, &c->journal.flags); | |
d5425a3b KO |
21 | } |
22 | ||
8cad3e2f KO |
23 | struct bkey_cached * |
24 | bch2_btree_key_cache_find(struct bch_fs *, enum btree_id, struct bpos); | |
25 | ||
2ca88e5a KO |
26 | int bch2_btree_iter_traverse_cached(struct btree_iter *); |
27 | ||
28 | bool bch2_btree_insert_key_cached(struct btree_trans *, | |
29 | struct btree_iter *, struct bkey_i *); | |
30 | int bch2_btree_key_cache_flush(struct btree_trans *, | |
31 | enum btree_id, struct bpos); | |
32 | #ifdef CONFIG_BCACHEFS_DEBUG | |
33 | void bch2_btree_key_cache_verify_clean(struct btree_trans *, | |
34 | enum btree_id, struct bpos); | |
35 | #else | |
36 | static inline void | |
37 | bch2_btree_key_cache_verify_clean(struct btree_trans *trans, | |
38 | enum btree_id id, struct bpos pos) {} | |
39 | #endif | |
40 | ||
41 | void bch2_fs_btree_key_cache_exit(struct btree_key_cache *); | |
42 | void bch2_fs_btree_key_cache_init_early(struct btree_key_cache *); | |
43 | int bch2_fs_btree_key_cache_init(struct btree_key_cache *); | |
44 | ||
d211b408 KO |
45 | void bch2_btree_key_cache_to_text(struct printbuf *, struct btree_key_cache *); |
46 | ||
14ba3706 KO |
47 | void bch2_btree_key_cache_exit(void); |
48 | int __init bch2_btree_key_cache_init(void); | |
49 | ||
2ca88e5a | 50 | #endif /* _BCACHEFS_BTREE_KEY_CACHE_H */ |