bcachefs: Fix journal_flush_seq()
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 2 Dec 2020 20:33:12 +0000 (15:33 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:49 +0000 (17:08 -0400)
The error check was inverted - leading fsyncs to get stuck and hang,
oops.

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

index 759a04346cdec52320f8a2032eb2461f61e7527a..0cd868c8248b54b8e6b0f9abf46ae1a72306e263 100644 (file)
@@ -552,16 +552,13 @@ int bch2_journal_flush_seq_async(struct journal *j, u64 seq,
        struct journal_buf *buf;
        int ret = 0;
 
-       if (seq <= j->err_seq)
-               return -EIO;
-
        if (seq <= j->seq_ondisk)
                return 1;
 
        spin_lock(&j->lock);
 
        /* Recheck under lock: */
-       if (seq <= j->err_seq) {
+       if (j->err_seq && seq >= j->err_seq) {
                ret = -EIO;
                goto out;
        }