From: Jeff Layton <[email protected]>

Plumb a new "since" pointer into the ->sync_fs operation. This will
eventually allow us to pass in an optional pointer to an errseq_t to
act as a cursor for error reporting.

For now it's ignored and all of the callers pass in NULL.

Signed-off-by: Jeff Layton <[email protected]>
---
 fs/affs/super.c      |  2 +-
 fs/btrfs/ctree.h     |  2 +-
 fs/btrfs/ioctl.c     |  2 +-
 fs/btrfs/super.c     |  2 +-
 fs/ceph/super.c      |  2 +-
 fs/exofs/super.c     |  2 +-
 fs/ext2/super.c      |  8 ++++----
 fs/ext4/super.c      |  4 ++--
 fs/f2fs/f2fs.h       |  2 +-
 fs/f2fs/file.c       |  6 +++---
 fs/f2fs/namei.c      | 16 ++++++++--------
 fs/f2fs/segment.c    |  2 +-
 fs/f2fs/super.c      |  4 ++--
 fs/gfs2/super.c      |  2 +-
 fs/hfs/super.c       |  2 +-
 fs/hfsplus/super.c   |  8 ++++----
 fs/jffs2/super.c     |  2 +-
 fs/jfs/super.c       |  2 +-
 fs/nilfs2/super.c    |  2 +-
 fs/ocfs2/super.c     |  4 ++--
 fs/overlayfs/super.c |  2 +-
 fs/quota/dquot.c     |  4 ++--
 fs/reiserfs/super.c  |  4 ++--
 fs/sync.c            |  4 ++--
 fs/sysv/inode.c      |  2 +-
 fs/ubifs/super.c     |  2 +-
 fs/udf/super.c       |  4 ++--
 fs/ufs/super.c       |  4 ++--
 fs/xfs/xfs_super.c   |  3 ++-
 include/linux/fs.h   |  7 ++++---
 30 files changed, 57 insertions(+), 55 deletions(-)

diff --git a/fs/affs/super.c b/fs/affs/super.c
index b76af8e3c87d..b85a10a930b4 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -55,7 +55,7 @@ affs_put_super(struct super_block *sb)
 }
 
 static int
-affs_sync_fs(struct super_block *sb, int wait)
+affs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        affs_commit_super(sb, wait);
        return __sync_blockdev(sb->s_bdev, wait);
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 2771cc56a622..58f1058a9012 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3316,7 +3316,7 @@ void btrfs_sysfs_remove_mounted(struct btrfs_fs_info 
*fs_info);
 /* super.c */
 int btrfs_parse_options(struct btrfs_fs_info *info, char *options,
                        unsigned long new_flags);
-int btrfs_sync_fs(struct super_block *sb, int wait);
+int btrfs_sync_fs(struct super_block *sb, int wait, errseq_t *since);
 
 static inline __printf(2, 3) __cold
 void btrfs_no_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...)
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 632e26d6f7ce..ed3bfd89d8c9 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -5500,7 +5500,7 @@ long btrfs_ioctl(struct file *file, unsigned int
                ret = btrfs_start_delalloc_roots(fs_info, 0, -1);
                if (ret)
                        return ret;
-               ret = btrfs_sync_fs(inode->i_sb, 1);
+               ret = btrfs_sync_fs(inode->i_sb, 1, NULL);
                /*
                 * The transaction thread may want to do more work,
                 * namely it pokes the cleaner kthread that will start
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 0628092b0b1b..4a404c07acee 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -1226,7 +1226,7 @@ static int btrfs_fill_super(struct super_block *sb,
        return err;
 }
 
-int btrfs_sync_fs(struct super_block *sb, int wait)
+int btrfs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct btrfs_trans_handle *trans;
        struct btrfs_fs_info *fs_info = btrfs_sb(sb);
diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index b33082e6878f..f8711d572743 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -103,7 +103,7 @@ static int ceph_statfs(struct dentry *dentry, struct 
kstatfs *buf)
 }
 
 
-static int ceph_sync_fs(struct super_block *sb, int wait)
+static int ceph_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
 
diff --git a/fs/exofs/super.c b/fs/exofs/super.c
index 179cd5c2f52a..2c40233f5dc7 100644
--- a/fs/exofs/super.c
+++ b/fs/exofs/super.c
@@ -364,7 +364,7 @@ static const struct export_operations exofs_export_ops;
 /*
  * Write the superblock to the OSD
  */
-static int exofs_sync_fs(struct super_block *sb, int wait)
+static int exofs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct exofs_sb_info *sbi;
        struct exofs_fscb *fscb;
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index fd8536bc13da..0366897bf02e 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -41,7 +41,7 @@
 static void ext2_write_super(struct super_block *sb);
 static int ext2_remount (struct super_block * sb, int * flags, char * data);
 static int ext2_statfs (struct dentry * dentry, struct kstatfs * buf);
-static int ext2_sync_fs(struct super_block *sb, int wait);
+static int ext2_sync_fs(struct super_block *sb, int wait, errseq_t *since);
 static int ext2_freeze(struct super_block *sb);
 static int ext2_unfreeze(struct super_block *sb);
 
@@ -1262,7 +1262,7 @@ void ext2_sync_super(struct super_block *sb, struct 
ext2_super_block *es,
  * may have been checked while mounted and e2fsck may have
  * set s_state to EXT2_VALID_FS after some corrections.
  */
-static int ext2_sync_fs(struct super_block *sb, int wait)
+static int ext2_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct ext2_sb_info *sbi = EXT2_SB(sb);
        struct ext2_super_block *es = EXT2_SB(sb)->s_es;
@@ -1293,7 +1293,7 @@ static int ext2_freeze(struct super_block *sb)
         * consistent.
         */
        if (atomic_long_read(&sb->s_remove_count)) {
-               ext2_sync_fs(sb, 1);
+               ext2_sync_fs(sb, 1, NULL);
                return 0;
        }
        /* Set EXT2_FS_VALID flag */
@@ -1316,7 +1316,7 @@ static int ext2_unfreeze(struct super_block *sb)
 static void ext2_write_super(struct super_block *sb)
 {
        if (!sb_rdonly(sb))
-               ext2_sync_fs(sb, 1);
+               ext2_sync_fs(sb, 1, NULL);
 }
 
 static int ext2_remount (struct super_block * sb, int * flags, char * data)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index ac2ffdbf54e6..e2b4956969b8 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -69,7 +69,7 @@ static void ext4_mark_recovery_complete(struct super_block 
*sb,
                                        struct ext4_super_block *es);
 static void ext4_clear_journal_err(struct super_block *sb,
                                   struct ext4_super_block *es);
-static int ext4_sync_fs(struct super_block *sb, int wait);
+static int ext4_sync_fs(struct super_block *sb, int wait, errseq_t *since);
 static int ext4_remount(struct super_block *sb, int *flags, char *data);
 static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf);
 static int ext4_unfreeze(struct super_block *sb);
@@ -4855,7 +4855,7 @@ int ext4_force_commit(struct super_block *sb)
        return ext4_journal_force_commit(journal);
 }
 
-static int ext4_sync_fs(struct super_block *sb, int wait)
+static int ext4_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        int ret = 0, ret2;
        tid_t target;
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 1df7f10476d6..9a4356a1f3d4 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -2703,7 +2703,7 @@ void f2fs_inode_synced(struct inode *inode);
 int f2fs_enable_quota_files(struct f2fs_sb_info *sbi, bool rdonly);
 void f2fs_quota_off_umount(struct super_block *sb);
 int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover);
-int f2fs_sync_fs(struct super_block *sb, int sync);
+int f2fs_sync_fs(struct super_block *sb, int sync, errseq_t *since);
 extern __printf(3, 4)
 void f2fs_msg(struct super_block *sb, const char *level, const char *fmt, ...);
 int sanity_check_ckpt(struct f2fs_sb_info *sbi);
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 6b94f19b3fa8..a6c9e47b2729 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -260,7 +260,7 @@ static int f2fs_do_sync_file(struct file *file, loff_t 
start, loff_t end,
 
        if (cp_reason) {
                /* all the dirty node pages should be flushed for POR */
-               ret = f2fs_sync_fs(inode->i_sb, 1);
+               ret = f2fs_sync_fs(inode->i_sb, 1, NULL);
 
                /*
                 * We've secured consistency through sync_fs. Following pino
@@ -1869,7 +1869,7 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned 
long arg)
                break;
        case F2FS_GOING_DOWN_METASYNC:
                /* do checkpoint only */
-               ret = f2fs_sync_fs(sb, 1);
+               ret = f2fs_sync_fs(sb, 1, NULL);
                if (ret)
                        goto out;
                f2fs_stop_checkpoint(sbi, false);
@@ -2097,7 +2097,7 @@ static int f2fs_ioc_write_checkpoint(struct file *filp, 
unsigned long arg)
        if (ret)
                return ret;
 
-       ret = f2fs_sync_fs(sbi->sb, 1);
+       ret = f2fs_sync_fs(sbi->sb, 1, NULL);
 
        mnt_drop_write_file(filp);
        return ret;
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index d5098efe577c..62a3082ca6b6 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -298,7 +298,7 @@ static int f2fs_create(struct inode *dir, struct dentry 
*dentry, umode_t mode,
        unlock_new_inode(inode);
 
        if (IS_DIRSYNC(dir))
-               f2fs_sync_fs(sbi->sb, 1);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
 
        f2fs_balance_fs(sbi, true);
        return 0;
@@ -345,7 +345,7 @@ static int f2fs_link(struct dentry *old_dentry, struct 
inode *dir,
        d_instantiate(dentry, inode);
 
        if (IS_DIRSYNC(dir))
-               f2fs_sync_fs(sbi->sb, 1);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
        return 0;
 out:
        clear_inode_flag(inode, FI_INC_LINK);
@@ -531,7 +531,7 @@ static int f2fs_unlink(struct inode *dir, struct dentry 
*dentry)
        f2fs_unlock_op(sbi);
 
        if (IS_DIRSYNC(dir))
-               f2fs_sync_fs(sbi->sb, 1);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
 fail:
        trace_f2fs_unlink_exit(inode, err);
        return err;
@@ -614,7 +614,7 @@ static int f2fs_symlink(struct inode *dir, struct dentry 
*dentry,
                                                        disk_link.len - 1);
 
                if (IS_DIRSYNC(dir))
-                       f2fs_sync_fs(sbi->sb, 1);
+                       f2fs_sync_fs(sbi->sb, 1, NULL);
        } else {
                f2fs_unlink(dir, dentry);
        }
@@ -665,7 +665,7 @@ static int f2fs_mkdir(struct inode *dir, struct dentry 
*dentry, umode_t mode)
        unlock_new_inode(inode);
 
        if (IS_DIRSYNC(dir))
-               f2fs_sync_fs(sbi->sb, 1);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
 
        f2fs_balance_fs(sbi, true);
        return 0;
@@ -717,7 +717,7 @@ static int f2fs_mknod(struct inode *dir, struct dentry 
*dentry,
        unlock_new_inode(inode);
 
        if (IS_DIRSYNC(dir))
-               f2fs_sync_fs(sbi->sb, 1);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
 
        f2fs_balance_fs(sbi, true);
        return 0;
@@ -979,7 +979,7 @@ static int f2fs_rename(struct inode *old_dir, struct dentry 
*old_dentry,
        f2fs_unlock_op(sbi);
 
        if (IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir))
-               f2fs_sync_fs(sbi->sb, 1);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
        return 0;
 
 put_out_dir:
@@ -1132,7 +1132,7 @@ static int f2fs_cross_rename(struct inode *old_dir, 
struct dentry *old_dentry,
        f2fs_unlock_op(sbi);
 
        if (IS_DIRSYNC(old_dir) || IS_DIRSYNC(new_dir))
-               f2fs_sync_fs(sbi->sb, 1);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
        return 0;
 out_new_dir:
        if (new_dir_entry) {
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 5854cc4e1d67..d49bb295e0c6 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -507,7 +507,7 @@ void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi)
                        sync_dirty_inodes(sbi, FILE_INODE);
                        blk_finish_plug(&plug);
                }
-               f2fs_sync_fs(sbi->sb, true);
+               f2fs_sync_fs(sbi->sb, 1, NULL);
                stat_inc_bg_cp_count(sbi->stat_info);
        }
 }
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 70fb16aac0bd..f5f6dc90a700 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1055,7 +1055,7 @@ static void f2fs_put_super(struct super_block *sb)
        kfree(sbi);
 }
 
-int f2fs_sync_fs(struct super_block *sb, int sync)
+int f2fs_sync_fs(struct super_block *sb, int sync, errseq_t *since)
 {
        struct f2fs_sb_info *sbi = F2FS_SB(sb);
        int err = 0, err2;
@@ -1497,7 +1497,7 @@ static int f2fs_remount(struct super_block *sb, int 
*flags, char *data)
 
                set_sbi_flag(sbi, SBI_IS_DIRTY);
                set_sbi_flag(sbi, SBI_IS_CLOSE);
-               f2fs_sync_fs(sb, 1);
+               f2fs_sync_fs(sb, 1, NULL);
                clear_sbi_flag(sbi, SBI_IS_CLOSE);
        }
 
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 884dd8b7d7b3..f5a9f2fe7d7a 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -949,7 +949,7 @@ static void gfs2_put_super(struct super_block *sb)
  * Flushes the log to disk.
  */
 
-static int gfs2_sync_fs(struct super_block *sb, int wait)
+static int gfs2_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        int bderr;
        struct gfs2_sbd *sdp = sb->s_fs_info;
diff --git a/fs/hfs/super.c b/fs/hfs/super.c
index 9cb410ebab7c..f8c9b745e33f 100644
--- a/fs/hfs/super.c
+++ b/fs/hfs/super.c
@@ -30,7 +30,7 @@ static struct kmem_cache *hfs_inode_cachep;
 
 MODULE_LICENSE("GPL");
 
-static int hfs_sync_fs(struct super_block *sb, int wait)
+static int hfs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        hfs_mdb_commit(sb);
        return __sync_blockdev(sb->s_bdev, wait);
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
index 513c357c734b..93f0e96527cf 100644
--- a/fs/hfsplus/super.c
+++ b/fs/hfsplus/super.c
@@ -172,7 +172,7 @@ static void hfsplus_evict_inode(struct inode *inode)
        }
 }
 
-static int hfsplus_sync_fs(struct super_block *sb, int wait)
+static int hfsplus_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb);
        struct hfsplus_vh *vhdr = sbi->s_vhdr;
@@ -254,7 +254,7 @@ static void delayed_sync_fs(struct work_struct *work)
        sbi->work_queued = 0;
        spin_unlock(&sbi->work_lock);
 
-       err = hfsplus_sync_fs(sbi->alloc_file->i_sb, 1);
+       err = hfsplus_sync_fs(sbi->alloc_file->i_sb, 1, NULL);
        if (err)
                pr_err("delayed sync fs err %d\n", err);
 }
@@ -291,7 +291,7 @@ static void hfsplus_put_super(struct super_block *sb)
                vhdr->attributes |= cpu_to_be32(HFSPLUS_VOL_UNMNT);
                vhdr->attributes &= cpu_to_be32(~HFSPLUS_VOL_INCNSTNT);
 
-               hfsplus_sync_fs(sb, 1);
+               hfsplus_sync_fs(sb, 1, NULL);
        }
 
        hfs_btree_close(sbi->attr_tree);
@@ -545,7 +545,7 @@ static int hfsplus_fill_super(struct super_block *sb, void 
*data, int silent)
                be32_add_cpu(&vhdr->write_count, 1);
                vhdr->attributes &= cpu_to_be32(~HFSPLUS_VOL_UNMNT);
                vhdr->attributes |= cpu_to_be32(HFSPLUS_VOL_INCNSTNT);
-               hfsplus_sync_fs(sb, 1);
+               hfsplus_sync_fs(sb, 1, NULL);
 
                if (!sbi->hidden_dir) {
                        mutex_lock(&sbi->vh_mutex);
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
index 87bdf0f4cba1..ce773153c1a0 100644
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -96,7 +96,7 @@ static int jffs2_show_options(struct seq_file *s, struct 
dentry *root)
        return 0;
 }
 
-static int jffs2_sync_fs(struct super_block *sb, int wait)
+static int jffs2_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
 
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index c4b99ad53f9c..722b786731d6 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -703,7 +703,7 @@ static struct dentry *jfs_do_mount(struct file_system_type 
*fs_type,
        return mount_bdev(fs_type, flags, dev_name, data, jfs_fill_super);
 }
 
-static int jfs_sync_fs(struct super_block *sb, int wait)
+static int jfs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct jfs_log *log = JFS_SBI(sb)->log;
 
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
index 280a28b62d13..4588ca0c7589 100644
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -491,7 +491,7 @@ static void nilfs_put_super(struct super_block *sb)
        sb->s_fs_info = NULL;
 }
 
-static int nilfs_sync_fs(struct super_block *sb, int wait)
+static int nilfs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct the_nilfs *nilfs = sb->s_fs_info;
        struct nilfs_super_block **sbp;
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 07a1a297c2ed..5eac259e3899 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -115,7 +115,7 @@ static void ocfs2_delete_osb(struct ocfs2_super *osb);
 
 static int ocfs2_statfs(struct dentry *dentry, struct kstatfs *buf);
 
-static int ocfs2_sync_fs(struct super_block *sb, int wait);
+static int ocfs2_sync_fs(struct super_block *sb, int wait, errseq_t *since);
 
 static int ocfs2_init_global_system_inodes(struct ocfs2_super *osb);
 static int ocfs2_init_local_system_inodes(struct ocfs2_super *osb);
@@ -406,7 +406,7 @@ static const struct file_operations ocfs2_osb_debug_fops = {
        .llseek =       generic_file_llseek,
 };
 
-static int ocfs2_sync_fs(struct super_block *sb, int wait)
+static int ocfs2_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        int status;
        tid_t target;
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index e8551c97de51..f660e0e8430d 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -266,7 +266,7 @@ static void ovl_put_super(struct super_block *sb)
 }
 
 /* Sync real dirty inodes in upper filesystem (if it exists) */
-static int ovl_sync_fs(struct super_block *sb, int wait)
+static int ovl_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct ovl_fs *ofs = sb->s_fs_info;
        struct super_block *upper_sb;
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index 96522760826c..e9cafa4766c5 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -686,7 +686,7 @@ int dquot_quota_sync(struct super_block *sb, int type)
        /* This is not very clever (and fast) but currently I don't know about
         * any other simple way of getting quota data to disk and we must get
         * them there for userspace to be visible... */
-       call_sync_fs(sb, 1);
+       call_sync_fs(sb, 1, NULL);
 
        /*
         * Now when everything is written we can discard the pagecache so
@@ -2243,7 +2243,7 @@ int dquot_disable(struct super_block *sb, int type, 
unsigned int flags)
 
        /* Sync the superblock so that buffers with quota data are written to
         * disk (and so userspace sees correct data afterwards). */
-       call_sync_fs(sb, 1);
+       call_sync_fs(sb, 1, NULL);
 
        /* Now the quota files are just ordinary files and we can set the
         * inode flags back. Moreover we discard the pagecache so that
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index b3a390eab9b7..490f5bca544e 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -64,7 +64,7 @@ static int is_any_reiserfs_magic_string(struct 
reiserfs_super_block *rs)
 static int reiserfs_remount(struct super_block *s, int *flags, char *data);
 static int reiserfs_statfs(struct dentry *dentry, struct kstatfs *buf);
 
-static int reiserfs_sync_fs(struct super_block *s, int wait)
+static int reiserfs_sync_fs(struct super_block *s, int wait, errseq_t *since)
 {
        struct reiserfs_transaction_handle th;
 
@@ -108,7 +108,7 @@ static void flush_old_commits(struct work_struct *work)
                sbi->work_queued = 0;
        spin_unlock(&sbi->old_work_lock);
 
-       reiserfs_sync_fs(s, 1);
+       reiserfs_sync_fs(s, 1, NULL);
        up_read(&s->s_umount);
 }
 
diff --git a/fs/sync.c b/fs/sync.c
index 44cdb38a8b67..b512c85bc9c5 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -35,7 +35,7 @@ static int __sync_filesystem(struct super_block *sb, int wait)
        else
                writeback_inodes_sb(sb, WB_REASON_SYNC);
 
-       return call_sync_fs(sb, wait);
+       return call_sync_fs(sb, wait, NULL);
 }
 
 /*
@@ -78,7 +78,7 @@ static void sync_fs_one_sb(struct super_block *sb, void *arg)
 
        if (sb_rdonly(sb))
                return;
-       call_sync_fs(sb, wait);
+       call_sync_fs(sb, wait, NULL);
 }
 
 static void fdatawrite_one_bdev(struct block_device *bdev, void *arg)
diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c
index 2232cf97840b..f202f3d73772 100644
--- a/fs/sysv/inode.c
+++ b/fs/sysv/inode.c
@@ -32,7 +32,7 @@
 #include <asm/byteorder.h>
 #include "sysv.h"
 
-static int sysv_sync_fs(struct super_block *sb, int wait)
+static int sysv_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct sysv_sb_info *sbi = SYSV_SB(sb);
        unsigned long time = get_seconds(), old_time;
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 6c397a389105..4faaf6f9fdbc 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -449,7 +449,7 @@ static int ubifs_show_options(struct seq_file *s, struct 
dentry *root)
        return 0;
 }
 
-static int ubifs_sync_fs(struct super_block *sb, int wait)
+static int ubifs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        int i, err;
        struct ubifs_info *c = sb->s_fs_info;
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 7949c338efa5..12cdc9d5acf0 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -89,7 +89,7 @@ enum { UDF_MAX_LINKS = 0xffff };
 /* These are the "meat" - everything else is stuffing */
 static int udf_fill_super(struct super_block *, void *, int);
 static void udf_put_super(struct super_block *);
-static int udf_sync_fs(struct super_block *, int);
+static int udf_sync_fs(struct super_block *, int, errseq_t *);
 static int udf_remount_fs(struct super_block *, int *, char *);
 static void udf_load_logicalvolint(struct super_block *, struct 
kernel_extent_ad);
 static int udf_find_fileset(struct super_block *, struct kernel_lb_addr *,
@@ -2345,7 +2345,7 @@ static void udf_put_super(struct super_block *sb)
        sb->s_fs_info = NULL;
 }
 
-static int udf_sync_fs(struct super_block *sb, int wait)
+static int udf_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct udf_sb_info *sbi = UDF_SB(sb);
 
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index 8254b8b3690f..e3f26b566f11 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -680,7 +680,7 @@ static void ufs_put_super_internal(struct super_block *sb)
        UFSD("EXIT\n");
 }
 
-static int ufs_sync_fs(struct super_block *sb, int wait)
+static int ufs_sync_fs(struct super_block *sb, int wait, errseq_t *since)
 {
        struct ufs_sb_private_info * uspi;
        struct ufs_super_block_first * usb1;
@@ -720,7 +720,7 @@ static void delayed_sync_fs(struct work_struct *work)
        sbi->work_queued = 0;
        spin_unlock(&sbi->work_lock);
 
-       ufs_sync_fs(sbi->sb, 1);
+       ufs_sync_fs(sbi->sb, 1, NULL);
 }
 
 void ufs_mark_sb_dirty(struct super_block *sb)
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 8683f8f2666f..1ce4b936c716 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1089,7 +1089,8 @@ xfs_free_fsname(
 STATIC int
 xfs_fs_sync_fs(
        struct super_block      *sb,
-       int                     wait)
+       int                     wait,
+       errseq_t                *since)
 {
        struct xfs_mount        *mp = XFS_M(sb);
 
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 69b76f394954..258877074ff4 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1821,7 +1821,7 @@ struct super_operations {
        int (*drop_inode) (struct inode *);
        void (*evict_inode) (struct inode *);
        void (*put_super) (struct super_block *);
-       int (*sync_fs)(struct super_block *sb, int wait);
+       int (*sync_fs)(struct super_block *sb, int wait, errseq_t *since);
        int (*freeze_super) (struct super_block *);
        int (*freeze_fs) (struct super_block *);
        int (*thaw_super) (struct super_block *);
@@ -2499,10 +2499,11 @@ extern const struct file_operations def_chr_fops;
  * Many legacy filesystems don't have a sync_fs op. For them, we just flush
  * the block device (if there is one).
  */
-static inline int call_sync_fs(struct super_block *sb, int wait)
+static inline int call_sync_fs(struct super_block *sb, int wait,
+                              errseq_t *since)
 {
        if (sb->s_op->sync_fs)
-               return sb->s_op->sync_fs(sb, wait);
+               return sb->s_op->sync_fs(sb, wait, since);
        return __sync_blockdev(sb->s_bdev, wait);
 }
 
-- 
2.17.0

Reply via email to