diff --git a/fs/adfs/super.c b/fs/adfs/super.c index 5caeb13cfca3..bf71751aa23a 100644 --- a/fs/adfs/super.c +++ b/fs/adfs/super.c @@ -208,6 +208,7 @@ static int parse_options(struct super_block *sb, char *options) static int adfs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_NODIRATIME; return parse_options(sb, data); } diff --git a/fs/affs/super.c b/fs/affs/super.c index 03384e739063..de541f3a29aa 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c @@ -520,6 +520,7 @@ affs_remount(struct super_block *sb, int *flags, char *data) pr_debug("AFFS: remount(flags=0x%x,opts=\"%s\")\n",*flags,data); + sync_filesystem(sb); *flags |= MS_NODIRATIME; memcpy(volume, sbi->s_volume, 32); diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c index c6681476807f..3e8a69b60e36 100644 --- a/fs/befs/linuxvfs.c +++ b/fs/befs/linuxvfs.c @@ -892,6 +892,7 @@ befs_fill_super(struct super_block *sb, void *data, int silent) static int befs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); if (!(*flags & MS_RDONLY)) return -EINVAL; return 0; diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 65ef4da493c3..6d88c722fa36 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -1131,6 +1131,8 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data) unsigned int old_metadata_ratio = fs_info->metadata_ratio; int ret; + sync_filesystem(sb); + ret = btrfs_parse_options(root, data); if (ret) { ret = -EINVAL; diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 92e2706196f5..3c9903cef8ff 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -517,6 +517,7 @@ static int cifs_show_stats(struct seq_file *s, struct dentry *root) static int cifs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_NODIRATIME; return 0; } diff --git a/fs/coda/inode.c b/fs/coda/inode.c index 7bec3116cd45..e17506a1a4ff 100644 --- a/fs/coda/inode.c +++ b/fs/coda/inode.c @@ -90,6 +90,7 @@ void coda_destroy_inodecache(void) static int coda_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_NOATIME; return 0; } diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c index c57ad8457b56..8040d47448d4 100644 --- a/fs/cramfs/inode.c +++ b/fs/cramfs/inode.c @@ -227,6 +227,7 @@ static void cramfs_put_super(struct super_block *sb) static int cramfs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_RDONLY; return 0; } diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index 7e7326f0c37a..5c549ad2e5b1 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -213,6 +213,7 @@ static int debugfs_remount(struct super_block *sb, int *flags, char *data) int err; struct debugfs_fs_info *fsi = sb->s_fs_info; + sync_filesystem(sb); err = debugfs_parse_options(data, &fsi->mount_opts); if (err) goto fail; diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c index 056ace043823..cf1615e73a0c 100644 --- a/fs/devpts/inode.c +++ b/fs/devpts/inode.c @@ -296,6 +296,7 @@ static int devpts_remount(struct super_block *sb, int *flags, char *data) struct pts_fs_info *fsi = DEVPTS_SB(sb); struct pts_mount_opts *opts = &fsi->mount_opts; + sync_filesystem(sb); err = parse_mount_options(data, PARSE_REMOUNT, opts); /* diff --git a/fs/efs/super.c b/fs/efs/super.c index d119adcf2304..71459c19c080 100644 --- a/fs/efs/super.c +++ b/fs/efs/super.c @@ -108,6 +108,7 @@ static void efs_put_super(struct super_block *s) static int efs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_RDONLY; return 0; } diff --git a/fs/ext2/super.c b/fs/ext2/super.c index bbde60f2a551..cab79fe8f170 100644 --- a/fs/ext2/super.c +++ b/fs/ext2/super.c @@ -1207,6 +1207,7 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data) unsigned long old_sb_flags; int err; + sync_filesystem(sb); spin_lock(&sbi->s_lock); /* Store the old options */ diff --git a/fs/ext3/super.c b/fs/ext3/super.c index 643ae4094414..954923dd5fc0 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c @@ -2577,6 +2577,8 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data) int i; #endif + sync_filesystem(sb); + /* Store the original options */ lock_super(sb); old_sb_flags = sb->s_flags; diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 4eaf201a9fb4..5255eb5d2cff 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -4391,6 +4391,8 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data) #endif char *orig_data = kstrdup(data, GFP_KERNEL); + sync_filesystem(sb); + /* Store the original options */ lock_super(sb); old_sb_flags = sb->s_flags; diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 86833be3ce17..9fb3196569c0 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -704,7 +704,6 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root) seq_puts(seq, ",noextent_cache"); if (test_opt(sbi, DATA_FLUSH)) seq_puts(seq, ",data_flush"); - seq_printf(seq, ",active_logs=%u", sbi->active_logs); return 0; } diff --git a/fs/fat/inode.c b/fs/fat/inode.c index fe6d34000454..299c3cb55d09 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -559,6 +559,9 @@ static int fat_remount(struct super_block *sb, int *flags, char *data) { struct msdos_sb_info *sbi = MSDOS_SB(sb); *flags |= MS_NODIRATIME | (sbi->options.isvfat ? 0 : MS_NOATIME); + + sync_filesystem(sb); + return 0; } diff --git a/fs/freevxfs/vxfs_super.c b/fs/freevxfs/vxfs_super.c index f47baf36b16d..fe7fec26a0d8 100644 --- a/fs/freevxfs/vxfs_super.c +++ b/fs/freevxfs/vxfs_super.c @@ -124,6 +124,7 @@ vxfs_statfs(struct dentry *dentry, struct kstatfs *bufp) static int vxfs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_RDONLY; return 0; } diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 600d76815296..82fb8f567c95 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -135,6 +135,7 @@ static void fuse_evict_inode(struct inode *inode) static int fuse_remount_fs(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); if (*flags & MS_MANDLOCK) return -EINVAL; diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c index 4db9a9a31f29..b139e9823870 100644 --- a/fs/gfs2/super.c +++ b/fs/gfs2/super.c @@ -1182,6 +1182,8 @@ static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data) struct gfs2_tune *gt = &sdp->sd_tune; int error; + sync_filesystem(sb); + spin_lock(>->gt_spin); args.ar_commit = gt->gt_logd_secs; args.ar_quota_quantum = gt->gt_quota_quantum; diff --git a/fs/hfs/super.c b/fs/hfs/super.c index c067bebaa8b1..6c1bd0f538b0 100644 --- a/fs/hfs/super.c +++ b/fs/hfs/super.c @@ -115,6 +115,7 @@ static int hfs_statfs(struct dentry *dentry, struct kstatfs *buf) static int hfs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_NODIRATIME; if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) return 0; diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index 92440d5b7411..7f1e1d1d317e 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c @@ -286,6 +286,7 @@ static int hfsplus_statfs(struct dentry *dentry, struct kstatfs *buf) static int hfsplus_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) return 0; if (!(*flags & MS_RDONLY)) { diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c index efc18237fbae..4a3525c4ccd8 100644 --- a/fs/hpfs/super.c +++ b/fs/hpfs/super.c @@ -389,6 +389,7 @@ static int hpfs_remount_fs(struct super_block *s, int *flags, char *data) struct hpfs_sb_info *sbi = hpfs_sb(s); char *new_opts = kstrdup(data, GFP_KERNEL); + sync_filesystem(s); if (!new_opts) return -ENOMEM; diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 42b1430c1ab5..8f1c9e87cf1a 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -239,6 +239,7 @@ static int jffs2_remount_fs(struct super_block *sb, int *flags, char *data) struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); int err; + sync_filesystem(sb); err = jffs2_parse_options(c, data); if (err) return -EINVAL; diff --git a/fs/jfs/super.c b/fs/jfs/super.c index c6c854445be9..382a9c2c5a10 100644 --- a/fs/jfs/super.c +++ b/fs/jfs/super.c @@ -368,6 +368,7 @@ static int jfs_remount(struct super_block *sb, int *flags, char *data) int flag = JFS_SBI(sb)->flag; int ret; + sync_filesystem(sb); if (!parse_options(data, sb, &newLVSize, &flag)) { return -EINVAL; } diff --git a/fs/minix/inode.c b/fs/minix/inode.c index fb7ea53766c7..e1586d61f09d 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c @@ -118,6 +118,7 @@ static int minix_remount (struct super_block * sb, int * flags, char * data) struct minix_sb_info * sbi = minix_sb(sb); struct minix_super_block * ms; + sync_filesystem(sb); ms = sbi->s_ms; if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) return 0; diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c index 62182921b2fd..e728d8a003b6 100644 --- a/fs/ncpfs/inode.c +++ b/fs/ncpfs/inode.c @@ -94,6 +94,7 @@ static void destroy_inodecache(void) static int ncp_remount(struct super_block *sb, int *flags, char* data) { + sync_filesystem(sb); *flags |= MS_NODIRATIME; return 0; } diff --git a/fs/nfs/super.c b/fs/nfs/super.c index b11a4b722ed9..f54536c28bd8 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -2054,6 +2054,8 @@ nfs_remount(struct super_block *sb, int *flags, char *raw_data) struct nfs4_mount_data *options4 = (struct nfs4_mount_data *)raw_data; u32 nfsvers = nfss->nfs_client->rpc_ops->version; + sync_filesystem(sb); + /* * Userspace mount programs that send binary options generally send * them populated with default values. We have no way to know which diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c index b4409dacc73a..ba07d0660bdb 100644 --- a/fs/nilfs2/super.c +++ b/fs/nilfs2/super.c @@ -1121,6 +1121,7 @@ static int nilfs_remount(struct super_block *sb, int *flags, char *data) unsigned long old_mount_opt; int err; + sync_filesystem(sb); old_sb_flags = sb->s_flags; old_mount_opt = nilfs->ns_mount_opt; diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c index 92e84664f3ee..bfb45f304211 100644 --- a/fs/ntfs/super.c +++ b/fs/ntfs/super.c @@ -444,6 +444,8 @@ static int ntfs_remount(struct super_block *sb, int *flags, char *opt) ntfs_debug("Entering with remount options string: %s", opt); + sync_filesystem(sb); + #ifndef NTFS_RW /* For read-only compiled driver, enforce read-only flag. */ *flags |= MS_RDONLY; diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 91a0020a0ad3..093152526ad5 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c @@ -632,6 +632,8 @@ static int ocfs2_remount(struct super_block *sb, int *flags, char *data) struct ocfs2_super *osb = OCFS2_SB(sb); u32 tmp; + sync_filesystem(sb); + if (!ocfs2_parse_options(sb, data, &parsed_options, 1) || !ocfs2_check_set_options(sb, &parsed_options)) { ret = -EINVAL; diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c index bce77df10ffd..d1af557931d1 100644 --- a/fs/openpromfs/inode.c +++ b/fs/openpromfs/inode.c @@ -375,6 +375,7 @@ static struct inode *openprom_iget(struct super_block *sb, ino_t ino) static int openprom_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_NOATIME; return 0; } diff --git a/fs/proc/root.c b/fs/proc/root.c index 2344df046dba..7971c9dc27fd 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c @@ -91,6 +91,8 @@ static int proc_parse_options(char *options, struct pid_namespace *pid) int proc_remount(struct super_block *sb, int *flags, char *data) { struct pid_namespace *pid = sb->s_fs_info; + + sync_filesystem(sb); return !proc_parse_options(data, pid); } diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c index 19507889bb7f..cc9e845f4e97 100644 --- a/fs/pstore/inode.c +++ b/fs/pstore/inode.c @@ -145,6 +145,7 @@ static void parse_options(char *options) static int pstore_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); parse_options(data); return 0; diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c index fe4d58abcf1c..40fc57eef65f 100644 --- a/fs/qnx4/inode.c +++ b/fs/qnx4/inode.c @@ -46,6 +46,7 @@ static int qnx4_remount(struct super_block *sb, int *flags, char *data) { struct qnx4_sb_info *qs; + sync_filesystem(sb); qs = qnx4_sb(sb); qs->Version = QNX4_VERSION; *flags |= MS_RDONLY; diff --git a/fs/qnx6/inode.c b/fs/qnx6/inode.c index 3814de64214d..5f918bd74ea4 100644 --- a/fs/qnx6/inode.c +++ b/fs/qnx6/inode.c @@ -55,6 +55,7 @@ static int qnx6_show_options(struct seq_file *seq, struct dentry *root) static int qnx6_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_RDONLY; return 0; } diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index 20c84471759f..df97d02f1d3e 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c @@ -1279,6 +1279,7 @@ static int reiserfs_remount(struct super_block *s, int *mount_flags, char *arg) int i; #endif + sync_filesystem(s); reiserfs_write_lock(s); #ifdef CONFIG_QUOTA diff --git a/fs/romfs/super.c b/fs/romfs/super.c index 0ecd71ce4124..de5b5a23ed49 100644 --- a/fs/romfs/super.c +++ b/fs/romfs/super.c @@ -435,6 +435,7 @@ static int romfs_statfs(struct dentry *dentry, struct kstatfs *buf) */ static int romfs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_RDONLY; return 0; } diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index 29cd014ed3a1..38dd0cb4fc06 100644 --- a/fs/squashfs/super.c +++ b/fs/squashfs/super.c @@ -371,6 +371,7 @@ static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf) static int squashfs_remount(struct super_block *sb, int *flags, char *data) { + sync_filesystem(sb); *flags |= MS_RDONLY; return 0; } diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c index fcdd63c71a2b..d8904e7a9c23 100644 --- a/fs/sysv/inode.c +++ b/fs/sysv/inode.c @@ -68,6 +68,9 @@ static void sysv_write_super(struct super_block *sb) static int sysv_remount(struct super_block *sb, int *flags, char *data) { struct sysv_sb_info *sbi = SYSV_SB(sb); + + sync_filesystem(sb); + lock_super(sb); if (sbi->s_forced_ro) *flags |= MS_RDONLY; diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index 6b606aa27df6..fc0e2ffe6d13 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c @@ -1854,6 +1854,7 @@ static int ubifs_remount_fs(struct super_block *sb, int *flags, char *data) int err; struct ubifs_info *c = sb->s_fs_info; + sync_filesystem(sb); dbg_gen("old flags %#lx, new flags %#x", sb->s_flags, *flags); err = ubifs_parse_options(c, data, 1); diff --git a/fs/udf/super.c b/fs/udf/super.c index 4988a8afcc8f..2192c033aad3 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -559,6 +559,7 @@ static int udf_remount_fs(struct super_block *sb, int *flags, char *options) struct udf_options uopt; struct udf_sb_info *sbi = UDF_SB(sb); int error = 0; + sync_filesystem(sb); uopt.flags = sbi->s_flags; uopt.uid = sbi->s_uid; diff --git a/fs/ufs/super.c b/fs/ufs/super.c index b87b69a2f190..a399aa4994fa 100644 --- a/fs/ufs/super.c +++ b/fs/ufs/super.c @@ -1261,6 +1261,7 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data) unsigned new_mount_opt, ufstype; unsigned flags; + sync_filesystem(sb); lock_ufs(sb); lock_super(sb); uspi = UFS_SB(sb)->s_uspi; diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index db54b7e59767..2f466aa6ae8c 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1113,6 +1113,7 @@ xfs_fs_remount( char *p; int error; + sync_filesystem(sb); while ((p = strsep(&options, ",")) != NULL) { int token;