bcachefs: bch2_btree_path_set_pos()
bch2_btree_path_set_pos() is now available outside of btree_iter.c Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
committed by
Kent Overstreet
parent
7c8f6f980d
commit
ce91abd60b
@@ -1701,7 +1701,7 @@ __bch2_btree_path_make_mut(struct btree_trans *trans,
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct btree_path * __must_check
|
struct btree_path * __must_check
|
||||||
__bch2_btree_path_set_pos(struct btree_trans *trans,
|
__bch2_btree_path_set_pos(struct btree_trans *trans,
|
||||||
struct btree_path *path, struct bpos new_pos,
|
struct btree_path *path, struct bpos new_pos,
|
||||||
bool intent, int cmp)
|
bool intent, int cmp)
|
||||||
@@ -1747,18 +1747,6 @@ out:
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct btree_path * __must_check
|
|
||||||
btree_path_set_pos(struct btree_trans *trans,
|
|
||||||
struct btree_path *path, struct bpos new_pos,
|
|
||||||
bool intent)
|
|
||||||
{
|
|
||||||
int cmp = bpos_cmp(new_pos, path->pos);
|
|
||||||
|
|
||||||
return cmp
|
|
||||||
? __bch2_btree_path_set_pos(trans, path, new_pos, intent, cmp)
|
|
||||||
: path;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Btree path: main interface: */
|
/* Btree path: main interface: */
|
||||||
|
|
||||||
static struct btree_path *have_path_at_pos(struct btree_trans *trans, struct btree_path *path)
|
static struct btree_path *have_path_at_pos(struct btree_trans *trans, struct btree_path *path)
|
||||||
@@ -1925,7 +1913,7 @@ struct btree_path *bch2_path_get(struct btree_trans *trans,
|
|||||||
path_pos->btree_id == btree_id &&
|
path_pos->btree_id == btree_id &&
|
||||||
path_pos->level == level) {
|
path_pos->level == level) {
|
||||||
__btree_path_get(path_pos, intent);
|
__btree_path_get(path_pos, intent);
|
||||||
path = btree_path_set_pos(trans, path_pos, pos, intent);
|
path = bch2_btree_path_set_pos(trans, path_pos, pos, intent);
|
||||||
} else {
|
} else {
|
||||||
path = btree_path_alloc(trans, path_pos);
|
path = btree_path_alloc(trans, path_pos);
|
||||||
path_pos = NULL;
|
path_pos = NULL;
|
||||||
@@ -2022,7 +2010,7 @@ bch2_btree_iter_traverse(struct btree_iter *iter)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
iter->path = btree_path_set_pos(iter->trans, iter->path,
|
iter->path = bch2_btree_path_set_pos(iter->trans, iter->path,
|
||||||
btree_iter_search_key(iter),
|
btree_iter_search_key(iter),
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
|
|
||||||
@@ -2058,7 +2046,7 @@ struct btree *bch2_btree_iter_peek_node(struct btree_iter *iter)
|
|||||||
bkey_init(&iter->k);
|
bkey_init(&iter->k);
|
||||||
iter->k.p = iter->pos = b->key.k.p;
|
iter->k.p = iter->pos = b->key.k.p;
|
||||||
|
|
||||||
iter->path = btree_path_set_pos(trans, iter->path, b->key.k.p,
|
iter->path = bch2_btree_path_set_pos(trans, iter->path, b->key.k.p,
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
iter->path->should_be_locked = true;
|
iter->path->should_be_locked = true;
|
||||||
BUG_ON(iter->path->uptodate);
|
BUG_ON(iter->path->uptodate);
|
||||||
@@ -2119,7 +2107,7 @@ struct btree *bch2_btree_iter_next_node(struct btree_iter *iter)
|
|||||||
* the next child node
|
* the next child node
|
||||||
*/
|
*/
|
||||||
path = iter->path =
|
path = iter->path =
|
||||||
btree_path_set_pos(trans, path, bpos_successor(iter->pos),
|
bch2_btree_path_set_pos(trans, path, bpos_successor(iter->pos),
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
|
|
||||||
path->level = iter->min_depth;
|
path->level = iter->min_depth;
|
||||||
@@ -2141,7 +2129,7 @@ struct btree *bch2_btree_iter_next_node(struct btree_iter *iter)
|
|||||||
bkey_init(&iter->k);
|
bkey_init(&iter->k);
|
||||||
iter->k.p = iter->pos = b->key.k.p;
|
iter->k.p = iter->pos = b->key.k.p;
|
||||||
|
|
||||||
iter->path = btree_path_set_pos(trans, iter->path, b->key.k.p,
|
iter->path = bch2_btree_path_set_pos(trans, iter->path, b->key.k.p,
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
iter->path->should_be_locked = true;
|
iter->path->should_be_locked = true;
|
||||||
BUG_ON(iter->path->uptodate);
|
BUG_ON(iter->path->uptodate);
|
||||||
@@ -2270,7 +2258,7 @@ static struct bkey_s_c __bch2_btree_iter_peek(struct btree_iter *iter, struct bp
|
|||||||
bch2_btree_iter_verify(iter);
|
bch2_btree_iter_verify(iter);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
iter->path = btree_path_set_pos(trans, iter->path, search_key,
|
iter->path = bch2_btree_path_set_pos(trans, iter->path, search_key,
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
|
|
||||||
ret = bch2_btree_path_traverse(trans, iter->path, iter->flags);
|
ret = bch2_btree_path_traverse(trans, iter->path, iter->flags);
|
||||||
@@ -2378,7 +2366,7 @@ struct bkey_s_c bch2_btree_iter_peek(struct btree_iter *iter)
|
|||||||
__btree_path_get(iter->path, iter->flags & BTREE_ITER_INTENT);
|
__btree_path_get(iter->path, iter->flags & BTREE_ITER_INTENT);
|
||||||
iter->update_path = iter->path;
|
iter->update_path = iter->path;
|
||||||
|
|
||||||
iter->update_path = btree_path_set_pos(trans,
|
iter->update_path = bch2_btree_path_set_pos(trans,
|
||||||
iter->update_path, pos,
|
iter->update_path, pos,
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
|
|
||||||
@@ -2416,7 +2404,7 @@ struct bkey_s_c bch2_btree_iter_peek(struct btree_iter *iter)
|
|||||||
else if (bkey_cmp(bkey_start_pos(k.k), iter->pos) > 0)
|
else if (bkey_cmp(bkey_start_pos(k.k), iter->pos) > 0)
|
||||||
iter->pos = bkey_start_pos(k.k);
|
iter->pos = bkey_start_pos(k.k);
|
||||||
|
|
||||||
iter->path = btree_path_set_pos(trans, iter->path, k.k->p,
|
iter->path = bch2_btree_path_set_pos(trans, iter->path, k.k->p,
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
BUG_ON(!iter->path->nodes_locked);
|
BUG_ON(!iter->path->nodes_locked);
|
||||||
out:
|
out:
|
||||||
@@ -2479,7 +2467,7 @@ struct bkey_s_c bch2_btree_iter_peek_prev(struct btree_iter *iter)
|
|||||||
search_key.snapshot = U32_MAX;
|
search_key.snapshot = U32_MAX;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
iter->path = btree_path_set_pos(trans, iter->path, search_key,
|
iter->path = bch2_btree_path_set_pos(trans, iter->path, search_key,
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
|
|
||||||
ret = bch2_btree_path_traverse(trans, iter->path, iter->flags);
|
ret = bch2_btree_path_traverse(trans, iter->path, iter->flags);
|
||||||
@@ -2607,7 +2595,7 @@ struct bkey_s_c bch2_btree_iter_peek_slot(struct btree_iter *iter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
search_key = btree_iter_search_key(iter);
|
search_key = btree_iter_search_key(iter);
|
||||||
iter->path = btree_path_set_pos(trans, iter->path, search_key,
|
iter->path = bch2_btree_path_set_pos(trans, iter->path, search_key,
|
||||||
iter->flags & BTREE_ITER_INTENT);
|
iter->flags & BTREE_ITER_INTENT);
|
||||||
|
|
||||||
ret = bch2_btree_path_traverse(trans, iter->path, iter->flags);
|
ret = bch2_btree_path_traverse(trans, iter->path, iter->flags);
|
||||||
|
@@ -157,6 +157,22 @@ bch2_btree_path_make_mut(struct btree_trans *trans,
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct btree_path * __must_check
|
||||||
|
__bch2_btree_path_set_pos(struct btree_trans *, struct btree_path *,
|
||||||
|
struct bpos, bool, int);
|
||||||
|
|
||||||
|
static inline struct btree_path * __must_check
|
||||||
|
bch2_btree_path_set_pos(struct btree_trans *trans,
|
||||||
|
struct btree_path *path, struct bpos new_pos,
|
||||||
|
bool intent)
|
||||||
|
{
|
||||||
|
int cmp = bpos_cmp(new_pos, path->pos);
|
||||||
|
|
||||||
|
return cmp
|
||||||
|
? __bch2_btree_path_set_pos(trans, path, new_pos, intent, cmp)
|
||||||
|
: path;
|
||||||
|
}
|
||||||
|
|
||||||
int __must_check bch2_btree_path_traverse(struct btree_trans *,
|
int __must_check bch2_btree_path_traverse(struct btree_trans *,
|
||||||
struct btree_path *, unsigned);
|
struct btree_path *, unsigned);
|
||||||
struct btree_path *bch2_path_get(struct btree_trans *, enum btree_id, struct bpos,
|
struct btree_path *bch2_path_get(struct btree_trans *, enum btree_id, struct bpos,
|
||||||
|
Reference in New Issue
Block a user