aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2011-04-27 11:49:09 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-04-27 16:20:01 -0400
commit26c4c170731f00008f4317a2888a0a07ac99d90d (patch)
treef187a530024ab278a3f3e25ee01edc2e8c568f39 /fs
parent613e901e1ee0e1096663b649eee8e5d6697919f3 (diff)
nfs: don't lose MS_SYNCHRONOUS on remount of noac mount
On a remount, the VFS layer will clear the MS_SYNCHRONOUS bit on the assumption that the flags on the mount syscall will have it set if the remounted fs is supposed to keep it. In the case of "noac" though, MS_SYNCHRONOUS is implied. A remount of such a mount will lose the MS_SYNCHRONOUS flag since "sync" isn't part of the mount options. Reported-by: Max Matveev <makc@redhat.com> Signed-off-by: Jeff Layton <jlayton@redhat.com> Cc: stable@kernel.org Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/super.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 75bcc3f0e0b5..e288f06d3fa7 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1977,6 +1977,15 @@ nfs_remount(struct super_block *sb, int *flags, char *raw_data)
1977 if (error < 0) 1977 if (error < 0)
1978 goto out; 1978 goto out;
1979 1979
1980 /*
1981 * noac is a special case. It implies -o sync, but that's not
1982 * necessarily reflected in the mtab options. do_remount_sb
1983 * will clear MS_SYNCHRONOUS if -o sync wasn't specified in the
1984 * remount options, so we have to explicitly reset it.
1985 */
1986 if (data->flags & NFS_MOUNT_NOAC)
1987 *flags |= MS_SYNCHRONOUS;
1988
1980 /* compare new mount options with old ones */ 1989 /* compare new mount options with old ones */
1981 error = nfs_compare_remount_data(nfss, data); 1990 error = nfs_compare_remount_data(nfss, data);
1982out: 1991out: