diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-12-11 05:24:36 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:09:18 +0300 |
commit | 20572300dcc537c22b435a1f01b810a9d7c140c9 (patch) | |
tree | 64d4859c40c84524fd33d878d1460f5f7a5cdef4 /fs/bcachefs/buckets.c | |
parent | fb0e480872ac858d836d5d6d713d0f31ae08c64d (diff) | |
download | linux-20572300dcc537c22b435a1f01b810a9d7c140c9.tar.xz |
bcachefs: Improve alloc_mem_to_key()
This moves some common code into alloc_mem_to_key(), which translates
from the in-memory format for a bucket to the btree key format.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/buckets.c')
-rw-r--r-- | fs/bcachefs/buckets.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c index 6bbf088cd095..4fef482ad60e 100644 --- a/fs/bcachefs/buckets.c +++ b/fs/bcachefs/buckets.c @@ -1492,7 +1492,6 @@ static int bch2_trans_start_alloc_update(struct btree_trans *trans, struct btree struct bch_fs *c = trans->c; struct bch_dev *ca = bch_dev_bkey_exists(c, ptr->dev); struct bpos pos = POS(ptr->dev, PTR_BUCKET_NR(ca, ptr)); - struct bucket *g; struct bkey_i *update; int ret; @@ -1507,14 +1506,9 @@ static int bch2_trans_start_alloc_update(struct btree_trans *trans, struct btree } update = __bch2_btree_trans_peek_updates(iter); - if (update && !bpos_cmp(update->k.p, pos)) { - *u = bch2_alloc_unpack(bkey_i_to_s_c(update)); - } else { - percpu_down_read(&c->mark_lock); - g = bucket(ca, pos.offset); - *u = alloc_mem_to_key(iter, g, READ_ONCE(g->mark)); - percpu_up_read(&c->mark_lock); - } + *u = update && !bpos_cmp(update->k.p, pos) + ? bch2_alloc_unpack(bkey_i_to_s_c(update)) + : alloc_mem_to_key(c, iter); return 0; } |