From dc6274bcb87dbf50c62d9dbacba770bae2f10279 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sun, 19 Mar 2023 13:01:06 -0400 Subject: [PATCH] bcachefs: Fix nocow write path closure bug With regular waitlists, we need to ensure we always call finish_wait(). With closures, the equivalent is that we need to call closure_sync() before returning with a stack-allocated closure. Signed-off-by: Kent Overstreet --- fs/bcachefs/io.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c index ad22557197a66..cc2dfcf16deee 100644 --- a/fs/bcachefs/io.c +++ b/fs/bcachefs/io.c @@ -453,13 +453,13 @@ retry: opts.data_replicas, opts.data_replicas, RESERVE_none, 0, &cl, &wp); - if (bch2_err_matches(ret, BCH_ERR_operation_blocked)) { + if (ret) { bch2_trans_unlock(trans); closure_sync(&cl); - goto retry; - } - if (ret) + if (bch2_err_matches(ret, BCH_ERR_operation_blocked)) + goto retry; return ret; + } sectors = min(sectors, wp->sectors_free); sectors_allocated = sectors; -- 2.30.2