Skip to content

Commit 8cfdc6c

Browse files
author
Kent Overstreet
committed
bcachefs: bch2_trans_node_drop()
Factor out a small common helper. Signed-off-by: Kent Overstreet <[email protected]>
1 parent 0971a72 commit 8cfdc6c

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

fs/bcachefs/btree_iter.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,19 @@ void bch2_trans_node_add(struct btree_trans *trans,
699699
bch2_trans_revalidate_updates_in_node(trans, b);
700700
}
701701

702+
void bch2_trans_node_drop(struct btree_trans *trans,
703+
struct btree *b)
704+
{
705+
struct btree_path *path;
706+
unsigned i, level = b->c.level;
707+
708+
trans_for_each_path(trans, path, i)
709+
if (path->l[level].b == b) {
710+
btree_node_unlock(trans, path, level);
711+
path->l[level].b = ERR_PTR(-BCH_ERR_no_btree_node_init);
712+
}
713+
}
714+
702715
/*
703716
* A btree node has been modified in such a way as to invalidate iterators - fix
704717
* them:

fs/bcachefs/btree_iter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ static inline void bch2_btree_path_downgrade(struct btree_trans *trans,
372372
void bch2_trans_downgrade(struct btree_trans *);
373373

374374
void bch2_trans_node_add(struct btree_trans *trans, struct btree_path *, struct btree *);
375+
void bch2_trans_node_drop(struct btree_trans *trans, struct btree *);
375376
void bch2_trans_node_reinit_iter(struct btree_trans *, struct btree *);
376377

377378
int __must_check __bch2_btree_iter_traverse(struct btree_iter *iter);

fs/bcachefs/btree_update_interior.c

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,6 @@ static void bch2_btree_node_free_inmem(struct btree_trans *trans,
238238
struct btree *b)
239239
{
240240
struct bch_fs *c = trans->c;
241-
unsigned i, level = b->c.level;
242241

243242
bch2_btree_node_lock_write_nofail(trans, path, &b->c);
244243

@@ -249,13 +248,9 @@ static void bch2_btree_node_free_inmem(struct btree_trans *trans,
249248
mutex_unlock(&c->btree_cache.lock);
250249

251250
six_unlock_write(&b->c.lock);
252-
mark_btree_node_locked_noreset(path, level, BTREE_NODE_INTENT_LOCKED);
251+
mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
253252

254-
trans_for_each_path(trans, path, i)
255-
if (path->l[level].b == b) {
256-
btree_node_unlock(trans, path, level);
257-
path->l[level].b = ERR_PTR(-BCH_ERR_no_btree_node_init);
258-
}
253+
bch2_trans_node_drop(trans, b);
259254
}
260255

261256
static void bch2_btree_node_free_never_used(struct btree_update *as,
@@ -264,8 +259,6 @@ static void bch2_btree_node_free_never_used(struct btree_update *as,
264259
{
265260
struct bch_fs *c = as->c;
266261
struct prealloc_nodes *p = &as->prealloc_nodes[b->c.lock.readers != NULL];
267-
struct btree_path *path;
268-
unsigned i, level = b->c.level;
269262

270263
BUG_ON(!list_empty(&b->write_blocked));
271264
BUG_ON(b->will_make_reachable != (1UL|(unsigned long) as));
@@ -287,11 +280,7 @@ static void bch2_btree_node_free_never_used(struct btree_update *as,
287280

288281
six_unlock_intent(&b->c.lock);
289282

290-
trans_for_each_path(trans, path, i)
291-
if (path->l[level].b == b) {
292-
btree_node_unlock(trans, path, level);
293-
path->l[level].b = ERR_PTR(-BCH_ERR_no_btree_node_init);
294-
}
283+
bch2_trans_node_drop(trans, b);
295284
}
296285

297286
static struct btree *__bch2_btree_node_alloc(struct btree_trans *trans,

0 commit comments

Comments
 (0)