bcachefs: bch2_trans_mark_pointer() refactoring
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 24 Jun 2023 16:17:57 +0000 (12:17 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:10:04 +0000 (17:10 -0400)
bch2_bucket_backpointer_mod() doesn't need to update the alloc key, we
can exit the alloc iter earlier.

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

index d770dc949661adf8cf361b242385e4e43c8ad7a2..48fdd5f96a3bdc7a1fd08fd26ae5dd4dd945d4bb 100644 (file)
@@ -1441,20 +1441,20 @@ static inline int bch2_trans_mark_pointer(struct btree_trans *trans,
 
        ret = __mark_pointer(trans, k, &p.ptr, sectors, bp.data_type,
                             a->v.gen, &a->v.data_type,
-                            &a->v.dirty_sectors, &a->v.cached_sectors);
+                            &a->v.dirty_sectors, &a->v.cached_sectors) ?:
+               bch2_trans_update(trans, &iter, &a->k_i, 0);
+       bch2_trans_iter_exit(trans, &iter);
+
        if (ret)
-               goto err;
+               return ret;
 
        if (!p.ptr.cached) {
                ret = bch2_bucket_backpointer_mod(trans, bucket, bp, k, insert);
                if (ret)
-                       goto err;
+                       return ret;
        }
 
-       ret = bch2_trans_update(trans, &iter, &a->k_i, 0);
-err:
-       bch2_trans_iter_exit(trans, &iter);
-       return ret;
+       return 0;
 }
 
 static int bch2_trans_mark_stripe_ptr(struct btree_trans *trans,