]> www.infradead.org Git - nvme.git/commitdiff
bcachefs: track writeback errors using the generic tracking infrastructure
authorYouling Tang <tangyouling@kylinos.cn>
Fri, 31 May 2024 02:31:15 +0000 (10:31 +0800)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 14 Jul 2024 23:00:14 +0000 (19:00 -0400)
We already using mapping_set_error() in bch2_writepage_io_done(), so all
we need to do is to use file_check_and_advance_wb_err() when handling
fsync() requests in bch2_fsync().

Signed-off-by: Youling Tang <tangyouling@kylinos.cn>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/fs-io.c

index ec7901265da56cc270cc9e18287b87d235fbb4af..1b734fd4acd22090279a106257b1c7432094733a 100644 (file)
@@ -192,7 +192,7 @@ int bch2_fsync(struct file *file, loff_t start, loff_t end, int datasync)
 {
        struct bch_inode_info *inode = file_bch_inode(file);
        struct bch_fs *c = inode->v.i_sb->s_fs_info;
-       int ret;
+       int ret, err;
 
        ret = file_write_and_wait_range(file, start, end);
        if (ret)
@@ -205,6 +205,11 @@ out:
        ret = bch2_err_class(ret);
        if (ret == -EROFS)
                ret = -EIO;
+
+       err = file_check_and_advance_wb_err(file);
+       if (!ret)
+               ret = err;
+
        return ret;
 }