Browse Source

[XFS] Fix regression introduced by remount fixup

Logically we would return an error in xfs_fs_remount code to prevent users
from believing they might have changed mount options using remount which
can't be changed.

But unfortunately mount(8) adds all options from mtab and fstab to the
mount arguments in some cases so we can't blindly reject options, but have
to check for each specified option if it actually differs from the
currently set option and only reject it if that's the case.

Until that is implemented we return success for every remount request, and
silently ignore all options that we can't actually change.

SGI-PV: 985710

SGI-Modid: xfs-linux-melb:xfs-kern:31908a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Tim Shimmin <tes@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Christoph Hellwig 16 years ago
parent
commit
6efdf28177
1 changed files with 20 additions and 0 deletions
  1. 20 0
      fs/xfs/linux-2.6/xfs_super.c

+ 20 - 0
fs/xfs/linux-2.6/xfs_super.c

@@ -1302,9 +1302,29 @@ xfs_fs_remount(
 			mp->m_flags &= ~XFS_MOUNT_BARRIER;
 			mp->m_flags &= ~XFS_MOUNT_BARRIER;
 			break;
 			break;
 		default:
 		default:
+			/*
+			 * Logically we would return an error here to prevent
+			 * users from believing they might have changed
+			 * mount options using remount which can't be changed.
+			 *
+			 * But unfortunately mount(8) adds all options from
+			 * mtab and fstab to the mount arguments in some cases
+			 * so we can't blindly reject options, but have to
+			 * check for each specified option if it actually
+			 * differs from the currently set option and only
+			 * reject it if that's the case.
+			 *
+			 * Until that is implemented we return success for
+			 * every remount request, and silently ignore all
+			 * options that we can't actually change.
+			 */
+#if 0
 			printk(KERN_INFO
 			printk(KERN_INFO
 	"XFS: mount option \"%s\" not supported for remount\n", p);
 	"XFS: mount option \"%s\" not supported for remount\n", p);
 			return -EINVAL;
 			return -EINVAL;
+#else
+			return 0;
+#endif
 		}
 		}
 	}
 	}