bcachefs: Fix error handling in bch2_trans_extent_merging
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 21 Oct 2021 18:33:31 +0000 (14:33 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:14 +0000 (17:09 -0400)
The back merging case wasn't returning errors correctly.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_update_leaf.c

index b344979ca7ed18de4d01a215a931ca7f3eabd846..22fce150781e8b6b92a720d6ad72cb07344583e2 100644 (file)
@@ -1058,7 +1058,7 @@ static int bch2_trans_update_extent(struct btree_trans *trans,
                if (bch2_bkey_maybe_mergable(k.k, &insert->k)) {
                        ret = extent_front_merge(trans, &iter, k, &insert, flags);
                        if (ret)
-                               goto out;
+                               goto err;
                }
 
                goto next;
@@ -1178,8 +1178,11 @@ next:
                        goto out;
        }
 
-       if (bch2_bkey_maybe_mergable(&insert->k, k.k))
-               extent_back_merge(trans, &iter, insert, k);
+       if (bch2_bkey_maybe_mergable(&insert->k, k.k)) {
+               ret = extent_back_merge(trans, &iter, insert, k);
+               if (ret)
+                       goto err;
+       }
 out:
        if (!bkey_deleted(&insert->k)) {
                /*