bcachefs: Fix for an assertion on filesystem error
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 18 Dec 2019 18:18:33 +0000 (13:18 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:33 +0000 (17:08 -0400)
Normally the in memory i_size is always greater than or equal to i_size
on disk; this doesn't hold on filesystem error.

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

index 5beb47805a68be03eb9f7cc598ad73bea399ec38..c30c028c869dd690226d231c7a62e4899b840539 100644 (file)
@@ -2255,6 +2255,15 @@ int bch2_truncate(struct bch_inode_info *inode, struct iattr *iattr)
        ret = PTR_ERR_OR_ZERO(iter);
        bch2_trans_exit(&trans);
 
+       if (ret)
+               goto err;
+
+       /*
+        * check this before next assertion; on filesystem error our normal
+        * invariants are a bit broken (truncate has to truncate the page cache
+        * before the inode).
+        */
+       ret = bch2_journal_error(&c->journal);
        if (ret)
                goto err;