summaryrefslogtreecommitdiff
path: root/fs/bcachefs/buckets.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-12-11 05:24:36 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:09:18 +0300
commit20572300dcc537c22b435a1f01b810a9d7c140c9 (patch)
tree64d4859c40c84524fd33d878d1460f5f7a5cdef4 /fs/bcachefs/buckets.c
parentfb0e480872ac858d836d5d6d713d0f31ae08c64d (diff)
downloadlinux-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.c12
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;
}