mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 13:54:57 +08:00
bcachefs: bch2_btree_path_make_mut() -> btree_path_idx_t
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
4617d94617
commit
f6363acaa6
@ -1208,13 +1208,12 @@ static struct btree_path *btree_path_clone(struct btree_trans *trans, struct btr
|
|||||||
}
|
}
|
||||||
|
|
||||||
__flatten
|
__flatten
|
||||||
struct btree_path *__bch2_btree_path_make_mut(struct btree_trans *trans,
|
btree_path_idx_t __bch2_btree_path_make_mut(struct btree_trans *trans,
|
||||||
struct btree_path *path, bool intent,
|
btree_path_idx_t path, bool intent, unsigned long ip)
|
||||||
unsigned long ip)
|
|
||||||
{
|
{
|
||||||
__btree_path_put(path, intent);
|
__btree_path_put(trans->paths + path, intent);
|
||||||
path = btree_path_clone(trans, path, intent);
|
path = btree_path_clone(trans, trans->paths + path, intent)->idx;
|
||||||
path->preserve = false;
|
trans->paths[path].preserve = false;
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1228,7 +1227,7 @@ __bch2_btree_path_set_pos(struct btree_trans *trans,
|
|||||||
bch2_trans_verify_not_in_restart(trans);
|
bch2_trans_verify_not_in_restart(trans);
|
||||||
EBUG_ON(!trans->paths[path_idx].ref);
|
EBUG_ON(!trans->paths[path_idx].ref);
|
||||||
|
|
||||||
path_idx = bch2_btree_path_make_mut(trans, trans->paths + path_idx, intent, ip)->idx;
|
path_idx = bch2_btree_path_make_mut(trans, path_idx, intent, ip);
|
||||||
|
|
||||||
struct btree_path *path = trans->paths + path_idx;
|
struct btree_path *path = trans->paths + path_idx;
|
||||||
path->pos = new_pos;
|
path->pos = new_pos;
|
||||||
|
@ -160,17 +160,18 @@ __trans_next_path_with_node(struct btree_trans *trans, struct btree *b,
|
|||||||
_path = __trans_next_path_with_node((_trans), (_b), \
|
_path = __trans_next_path_with_node((_trans), (_b), \
|
||||||
(_path)->idx + 1))
|
(_path)->idx + 1))
|
||||||
|
|
||||||
struct btree_path *__bch2_btree_path_make_mut(struct btree_trans *, struct btree_path *,
|
btree_path_idx_t __bch2_btree_path_make_mut(struct btree_trans *, btree_path_idx_t,
|
||||||
bool, unsigned long);
|
bool, unsigned long);
|
||||||
|
|
||||||
static inline struct btree_path * __must_check
|
static inline btree_path_idx_t __must_check
|
||||||
bch2_btree_path_make_mut(struct btree_trans *trans,
|
bch2_btree_path_make_mut(struct btree_trans *trans,
|
||||||
struct btree_path *path, bool intent,
|
btree_path_idx_t path, bool intent,
|
||||||
unsigned long ip)
|
unsigned long ip)
|
||||||
{
|
{
|
||||||
if (path->ref > 1 || path->preserve)
|
if (trans->paths[path].ref > 1 ||
|
||||||
|
trans->paths[path].preserve)
|
||||||
path = __bch2_btree_path_make_mut(trans, path, intent, ip);
|
path = __bch2_btree_path_make_mut(trans, path, intent, ip);
|
||||||
path->should_be_locked = false;
|
trans->paths[path].should_be_locked = false;
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,12 +34,12 @@ static struct btree_path *get_unlocked_mut_path(struct btree_trans *trans,
|
|||||||
unsigned level,
|
unsigned level,
|
||||||
struct bpos pos)
|
struct bpos pos)
|
||||||
{
|
{
|
||||||
struct btree_path *path;
|
btree_path_idx_t path_idx = bch2_path_get(trans, btree_id, pos, level + 1, level,
|
||||||
|
|
||||||
path = trans->paths + bch2_path_get(trans, btree_id, pos, level + 1, level,
|
|
||||||
BTREE_ITER_NOPRESERVE|
|
BTREE_ITER_NOPRESERVE|
|
||||||
BTREE_ITER_INTENT, _RET_IP_);
|
BTREE_ITER_INTENT, _RET_IP_);
|
||||||
path = bch2_btree_path_make_mut(trans, path, true, _RET_IP_);
|
path_idx = bch2_btree_path_make_mut(trans, path_idx, true, _RET_IP_);
|
||||||
|
|
||||||
|
struct btree_path *path = trans->paths + path_idx;
|
||||||
bch2_btree_path_downgrade(trans, path);
|
bch2_btree_path_downgrade(trans, path);
|
||||||
__bch2_btree_path_unlock(trans, path);
|
__bch2_btree_path_unlock(trans, path);
|
||||||
return path;
|
return path;
|
||||||
@ -2167,7 +2167,7 @@ static int __bch2_btree_node_update_key(struct btree_trans *trans,
|
|||||||
if (parent) {
|
if (parent) {
|
||||||
bch2_trans_copy_iter(&iter2, iter);
|
bch2_trans_copy_iter(&iter2, iter);
|
||||||
|
|
||||||
iter2.path = bch2_btree_path_make_mut(trans, iter2.path,
|
iter2.path = trans->paths + bch2_btree_path_make_mut(trans, iter2.path->idx,
|
||||||
iter2.flags & BTREE_ITER_INTENT,
|
iter2.flags & BTREE_ITER_INTENT,
|
||||||
_THIS_IP_);
|
_THIS_IP_);
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ static inline int wb_flush_one(struct btree_trans *trans, struct btree_iter *ite
|
|||||||
* set_pos and traverse():
|
* set_pos and traverse():
|
||||||
*/
|
*/
|
||||||
if (iter->path->ref > 1)
|
if (iter->path->ref > 1)
|
||||||
iter->path = __bch2_btree_path_make_mut(trans, iter->path, true, _THIS_IP_);
|
iter->path = trans->paths + __bch2_btree_path_make_mut(trans, iter->path->idx, true, _THIS_IP_);
|
||||||
|
|
||||||
path = iter->path;
|
path = iter->path;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user