]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: bch2_bucket_alloc_trans_early -> for_each_btree_key_norestart
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 17 Jul 2022 06:46:46 +0000 (02:46 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:37 +0000 (17:09 -0400)
Nested btree transactions require special care, and an upcoming patch is
going to add assertions to that effect. We don't want to be using them
unnecessarily, so this patch switches bch2_bucket_trans_early() to not
handle transaction restarts.

This patch also adds a cursor so that on transaction restart we can
continue scanning from where the previous search for an empty bucket
left off.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_foreground.c

index 99fbf1d2dee5d96b8ab123277080e19fff628bd8..bbe74a05a7a2779cc638116f710e1d0a507f4782 100644 (file)
@@ -406,7 +406,7 @@ bch2_bucket_alloc_early(struct btree_trans *trans,
        u64 alloc_cursor = max(alloc_start, READ_ONCE(ca->alloc_cursor));
        int ret;
 again:
-       for_each_btree_key(trans, iter, BTREE_ID_alloc, POS(ca->dev_idx, alloc_cursor),
+       for_each_btree_key_norestart(trans, iter, BTREE_ID_alloc, POS(ca->dev_idx, alloc_cursor),
                           BTREE_ITER_SLOTS, k, ret) {
                struct bch_alloc_v4 a;