From: Kent Overstreet Date: Mon, 26 May 2025 16:48:19 +0000 (-0400) Subject: bcachefs: btree_node_missing_err() X-Git-Tag: v6.16-rc1~48^2~51 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=19c0a8aa8ae302a3b038283c7d7eee0371ae3bf5;p=thirdparty%2Fkernel%2Flinux.git bcachefs: btree_node_missing_err() Factor out an error path for a small stack usage improvement. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 6303531b4c5b9..5affa5fc22f40 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -925,6 +925,22 @@ err: return ret; } +static noinline_for_stack int btree_node_missing_err(struct btree_trans *trans, + struct btree_path *path) +{ + struct bch_fs *c = trans->c; + struct printbuf buf = PRINTBUF; + + prt_str(&buf, "node not found at pos "); + bch2_bpos_to_text(&buf, path->pos); + prt_str(&buf, " within parent node "); + bch2_bkey_val_to_text(&buf, c, bkey_i_to_s_c(&path_l(path)->b->key)); + + bch2_fs_fatal_error(c, "%s", buf.buf); + printbuf_exit(&buf); + return -BCH_ERR_btree_need_topology_repair; +} + static __always_inline int btree_path_down(struct btree_trans *trans, struct btree_path *path, unsigned flags, @@ -945,18 +961,8 @@ static __always_inline int btree_path_down(struct btree_trans *trans, return ret; } else { struct bkey_packed *k = bch2_btree_node_iter_peek(&l->iter, l->b); - if (unlikely(!k)) { - struct printbuf buf = PRINTBUF; - - prt_str(&buf, "node not found at pos "); - bch2_bpos_to_text(&buf, path->pos); - prt_str(&buf, " within parent node "); - bch2_bkey_val_to_text(&buf, c, bkey_i_to_s_c(&l->b->key)); - - bch2_fs_fatal_error(c, "%s", buf.buf); - printbuf_exit(&buf); - return -BCH_ERR_btree_need_topology_repair; - } + if (unlikely(!k)) + return btree_node_missing_err(trans, path); bch2_bkey_unpack(l->b, &trans->btree_path_down, k);