2008-03-19 13:19:49

by Jeff Layton

[permalink] [raw]
Subject: [PATCH] NFS: make remounts of NFS filesystems return a proper error

Currently if you try to remount an NFS filesystem (using -o remount),
it will return as if the remount had succeeded even though it doesn't
actually apply any changes to the mount options.

Since remount functionality isn't actually implemented, just have any
remount attempt return -ENOSYS to make it clear that it doesn't work.

Signed-off-by: Jeff Layton <[email protected]>
---
fs/nfs/super.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index fcf4b98..74c81bd 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -207,6 +207,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name, void *raw_data, struct vfsmount *mnt);
static void nfs_kill_super(struct super_block *);
static void nfs_put_super(struct super_block *);
+static int nfs_remount(struct super_block *sb, int *flags, char *data);

static struct file_system_type nfs_fs_type = {
.owner = THIS_MODULE,
@@ -230,6 +231,7 @@ static const struct super_operations nfs_sops = {
.write_inode = nfs_write_inode,
.put_super = nfs_put_super,
.statfs = nfs_statfs,
+ .remount_fs = nfs_remount,
.clear_inode = nfs_clear_inode,
.umount_begin = nfs_umount_begin,
.show_options = nfs_show_options,
@@ -274,6 +276,7 @@ static const struct super_operations nfs4_sops = {
.destroy_inode = nfs_destroy_inode,
.write_inode = nfs_write_inode,
.statfs = nfs_statfs,
+ .remount_fs = nfs_remount,
.clear_inode = nfs4_clear_inode,
.umount_begin = nfs_umount_begin,
.show_options = nfs_show_options,
@@ -1681,6 +1684,16 @@ error_splat_super:
return error;
}

+/*
+ * Remounts with NFS have a whole host of issues. Just have them fail
+ * outright for now.
+ */
+static int
+nfs_remount(struct super_block *sb, int *flags, char *data)
+{
+ return -ENOSYS;
+}
+
#ifdef CONFIG_NFS_V4

/*
--
1.5.3.6