diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-03-14 19:39:26 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-03-31 20:36:11 -0400 |
commit | 7f9e5080366726084eb765a5d689bdf502e7e2ed (patch) | |
tree | 90e4b54e82950b5939dcebd72d9e6735d2b45e30 /fs/bcachefs/btree_update_interior.c | |
parent | 47d2080e30b0b9fc636eba4e74f9e4bdc01543d7 (diff) | |
download | linux-stable-7f9e5080366726084eb765a5d689bdf502e7e2ed.tar.gz linux-stable-7f9e5080366726084eb765a5d689bdf502e7e2ed.tar.bz2 linux-stable-7f9e5080366726084eb765a5d689bdf502e7e2ed.zip |
bcachefs: Fix bch2_btree_increase_depth()
When we haven't yet allocated any btree nodes for a given btree, we
first need to call the regular split path to allocate one.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_update_interior.c')
-rw-r--r-- | fs/bcachefs/btree_update_interior.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c index 826cebe4bce0..9c4325786ba8 100644 --- a/fs/bcachefs/btree_update_interior.c +++ b/fs/bcachefs/btree_update_interior.c @@ -1882,9 +1882,12 @@ int bch2_btree_increase_depth(struct btree_trans *trans, btree_path_idx_t path, { struct bch_fs *c = trans->c; struct btree *b = bch2_btree_id_root(c, trans->paths[path].btree_id)->b; + + if (btree_node_fake(b)) + return bch2_btree_split_leaf(trans, path, flags); + struct btree_update *as = - bch2_btree_update_start(trans, trans->paths + path, - b->c.level, true, flags); + bch2_btree_update_start(trans, trans->paths + path, b->c.level, true, flags); if (IS_ERR(as)) return PTR_ERR(as); |