Commit 98638ffa authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: Better inlining in bch2_subvolume_get_snapshot()

This provides an inlined version of bch2_subvolume_get() and uses it in
bch2_subvolume_get_snapshot(), since this is the version that's used all
over the place and in fast paths (e.g. IO paths).
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 0aba9eba
...@@ -795,10 +795,11 @@ void bch2_subvolume_to_text(struct printbuf *out, struct bch_fs *c, ...@@ -795,10 +795,11 @@ void bch2_subvolume_to_text(struct printbuf *out, struct bch_fs *c,
le32_to_cpu(s.v->snapshot)); le32_to_cpu(s.v->snapshot));
} }
int bch2_subvolume_get(struct btree_trans *trans, unsigned subvol, static __always_inline int
bool inconsistent_if_not_found, bch2_subvolume_get_inlined(struct btree_trans *trans, unsigned subvol,
int iter_flags, bool inconsistent_if_not_found,
struct bch_subvolume *s) int iter_flags,
struct bch_subvolume *s)
{ {
struct btree_iter iter; struct btree_iter iter;
struct bkey_s_c k; struct bkey_s_c k;
...@@ -818,6 +819,14 @@ int bch2_subvolume_get(struct btree_trans *trans, unsigned subvol, ...@@ -818,6 +819,14 @@ int bch2_subvolume_get(struct btree_trans *trans, unsigned subvol,
return ret; return ret;
} }
int bch2_subvolume_get(struct btree_trans *trans, unsigned subvol,
bool inconsistent_if_not_found,
int iter_flags,
struct bch_subvolume *s)
{
return bch2_subvolume_get_inlined(trans, subvol, inconsistent_if_not_found, iter_flags, s);
}
int bch2_snapshot_get_subvol(struct btree_trans *trans, u32 snapshot, int bch2_snapshot_get_subvol(struct btree_trans *trans, u32 snapshot,
struct bch_subvolume *subvol) struct bch_subvolume *subvol)
{ {
...@@ -833,12 +842,12 @@ int bch2_subvolume_get_snapshot(struct btree_trans *trans, u32 subvol, ...@@ -833,12 +842,12 @@ int bch2_subvolume_get_snapshot(struct btree_trans *trans, u32 subvol,
struct bch_subvolume s; struct bch_subvolume s;
int ret; int ret;
ret = bch2_subvolume_get(trans, subvol, true, ret = bch2_subvolume_get_inlined(trans, subvol, true,
BTREE_ITER_CACHED| BTREE_ITER_CACHED|
BTREE_ITER_WITH_UPDATES, BTREE_ITER_WITH_UPDATES,
&s); &s);
if (!ret)
*snapid = le32_to_cpu(s.snapshot); *snapid = le32_to_cpu(s.snapshot);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment