summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_cache.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2017-05-12 18:45:15 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2017-05-12 23:14:24 -0800
commit565b4a74d6c25c78b0d2b82d9529595fc6269308 (patch)
tree3e4440a60c5f8519352ce5b6c587a7d1a79c4655 /libbcachefs/btree_cache.h
parenta588eb0d9e30dffa4b319a4715c1454ee1d911f1 (diff)
Update bcachefs sources to 14e9ac5016 bcachefs: btree_iter fastpath
Diffstat (limited to 'libbcachefs/btree_cache.h')
-rw-r--r--libbcachefs/btree_cache.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/libbcachefs/btree_cache.h b/libbcachefs/btree_cache.h
index ca8e3195..ea53d2b2 100644
--- a/libbcachefs/btree_cache.h
+++ b/libbcachefs/btree_cache.h
@@ -3,6 +3,7 @@
#include "bcachefs.h"
#include "btree_types.h"
+#include "extents.h"
struct btree_iter;
@@ -11,6 +12,7 @@ extern const char * const bch2_btree_ids[];
void bch2_recalc_btree_reserve(struct bch_fs *);
void bch2_btree_node_hash_remove(struct bch_fs *, struct btree *);
+int __bch2_btree_node_hash_insert(struct bch_fs *, struct btree *);
int bch2_btree_node_hash_insert(struct bch_fs *, struct btree *,
unsigned, enum btree_id);
@@ -28,6 +30,14 @@ void bch2_btree_node_prefetch(struct btree_iter *, const struct bkey_i *,
void bch2_fs_btree_exit(struct bch_fs *);
int bch2_fs_btree_init(struct bch_fs *);
+#define PTR_HASH(_k) (bkey_i_to_extent_c(_k)->v._data[0])
+
+/* is btree node in hash table? */
+static inline bool btree_node_hashed(struct btree *b)
+{
+ return bkey_extent_is_data(&b->key.k) && PTR_HASH(&b->key);
+}
+
#define for_each_cached_btree(_b, _c, _tbl, _iter, _pos) \
for ((_tbl) = rht_dereference_rcu((_c)->btree_cache_table.tbl, \
&(_c)->btree_cache_table), \