Just check and advance the errseq_t in the file before returning.
Internal callers of filemap_* functions are left as-is.

Signed-off-by: Jeff Layton <jlay...@redhat.com>
---
 fs/btrfs/file.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 0f102a1b851f..609226beea43 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2017,7 +2017,7 @@ int btrfs_sync_file(struct file *file, loff_t start, 
loff_t end, int datasync)
        struct btrfs_root *root = BTRFS_I(inode)->root;
        struct btrfs_trans_handle *trans;
        struct btrfs_log_ctx ctx;
-       int ret = 0;
+       int ret = 0, err;
        bool full_sync = 0;
        u64 len;
 
@@ -2036,7 +2036,7 @@ int btrfs_sync_file(struct file *file, loff_t start, 
loff_t end, int datasync)
         */
        ret = start_ordered_ops(inode, start, end);
        if (ret)
-               return ret;
+               goto out;
 
        inode_lock(inode);
        atomic_inc(&root->log_batch);
@@ -2233,6 +2233,9 @@ int btrfs_sync_file(struct file *file, loff_t start, 
loff_t end, int datasync)
                ret = btrfs_end_transaction(trans);
        }
 out:
+       err = filemap_report_wb_err(file);
+       if (!ret)
+               ret = err;
        return ret > 0 ? -EIO : ret;
 }
 
-- 
2.13.0

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to