bcachefs: Fix lost transaction restart error
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 18 Mar 2024 04:13:34 +0000 (00:13 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 18 Mar 2024 04:24:23 +0000 (00:24 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_foreground.c

index ca58193dd90279b6d6081f06954690f214ba3a42..214b15c84d1f3258d2ba23effacc5ad4e8852783 100644 (file)
@@ -1356,15 +1356,17 @@ retry:
 
                /* Don't retry from all devices if we're out of open buckets: */
                if (bch2_err_matches(ret, BCH_ERR_open_buckets_empty)) {
-                       int ret = open_bucket_add_buckets(trans, &ptrs, wp, devs_have,
+                       int ret2 = open_bucket_add_buckets(trans, &ptrs, wp, devs_have,
                                              target, erasure_code,
                                              nr_replicas, &nr_effective,
                                              &have_cache, watermark,
                                              flags, cl);
-                       if (!ret ||
-                           bch2_err_matches(ret, BCH_ERR_transaction_restart) ||
-                           bch2_err_matches(ret, BCH_ERR_open_buckets_empty))
+                       if (!ret2 ||
+                           bch2_err_matches(ret2, BCH_ERR_transaction_restart) ||
+                           bch2_err_matches(ret2, BCH_ERR_open_buckets_empty)) {
+                               ret = ret2;
                                goto alloc_done;
+                       }
                }
 
                /*