]> git.ipfire.org Git - people/ms/linux.git/blobdiff - fs/sync.c
vfs: track per-sb writeback errors and report them to syncfs
[people/ms/linux.git] / fs / sync.c
index 4d1ff010bc5afcd6acee1e4dbd736e8bfbd9081a..c6f6f5be5682a97714d676eea9dae9507ae45d21 100644 (file)
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -161,7 +161,7 @@ SYSCALL_DEFINE1(syncfs, int, fd)
 {
        struct fd f = fdget(fd);
        struct super_block *sb;
-       int ret;
+       int ret, ret2;
 
        if (!f.file)
                return -EBADF;
@@ -171,8 +171,10 @@ SYSCALL_DEFINE1(syncfs, int, fd)
        ret = sync_filesystem(sb);
        up_read(&sb->s_umount);
 
+       ret2 = errseq_check_and_advance(&sb->s_wb_err, &f.file->f_sb_err);
+
        fdput(f);
-       return ret;
+       return ret ? ret : ret2;
 }
 
 /**