Skip to content

Commit a154154

Browse files
alanskindKent Overstreet
authored andcommitted
bcachefs: Release transaction before wake up
We will get this if we wake up first: Kernel panic - not syncing: btree_node_write_done leaked btree_trans since there are still transactions waiting for cycle detectors after BTREE_NODE_write_in_flight is cleared. Signed-off-by: Alan Huang <[email protected]> Signed-off-by: Kent Overstreet <[email protected]>
1 parent 0151d10 commit a154154

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

fs/bcachefs/btree_io.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1838,10 +1838,11 @@ static void btree_node_write_done(struct bch_fs *c, struct btree *b)
18381838
struct btree_trans *trans = bch2_trans_get(c);
18391839

18401840
btree_node_lock_nopath_nofail(trans, &b->c, SIX_LOCK_read);
1841-
__btree_node_write_done(c, b);
1842-
six_unlock_read(&b->c.lock);
18431841

1842+
/* we don't need transaction context anymore after we got the lock. */
18441843
bch2_trans_put(trans);
1844+
__btree_node_write_done(c, b);
1845+
six_unlock_read(&b->c.lock);
18451846
}
18461847

18471848
static void btree_node_write_work(struct work_struct *work)

0 commit comments

Comments
 (0)