this one is fairly harmless since the invalidate worker will just run
again later if it needs to, but still worth fixing

Signed-off-by: Kent Overstreet <[email protected]>
---
 fs/bcachefs/alloc_background.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/bcachefs/alloc_background.c b/fs/bcachefs/alloc_background.c
index 6e161f8ffe8d..50f1919f4cbf 100644
--- a/fs/bcachefs/alloc_background.c
+++ b/fs/bcachefs/alloc_background.c
@@ -2137,14 +2137,15 @@ static void bch2_do_invalidates_work(struct work_struct 
*work)
 
                struct bkey_s_c k = next_lru_key(trans, &iter, ca, &wrapped);
                ret = bkey_err(k);
-               if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
-                       continue;
                if (ret)
-                       break;
+                       goto restart_err;
                if (!k.k)
                        break;
 
                ret = invalidate_one_bucket(trans, &iter, k, &nr_to_invalidate);
+restart_err:
+               if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
+                       continue;
                if (ret)
                        break;
 
-- 
2.45.2


Reply via email to