aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_vfsops.c
diff options
context:
space:
mode:
authorDavid Chinner <dgc@sgi.com>2005-11-01 18:33:05 -0500
committerNathan Scott <nathans@sgi.com>2005-11-01 18:33:05 -0500
commite8c8b3a79d85c22d3665b97dde843dc4d8d7ae37 (patch)
treea82b58ebc5c40474cdc53c91bd135b97034de565 /fs/xfs/xfs_vfsops.c
parentee34807a65aa0c5911dc27682863afca780a003e (diff)
[XFS] Introduce two new mount options (nolargeio/largeio) to allow
filesystems to expose the filesystem stripe width in stat(2) rather than the page cache size. This allows applications requiring high bandwidth to easily determine the optimum I/O size for the underlying filesystem. The default is to report the page cache size (i.e. "nolargeio"). SGI-PV: 942818 SGI-Modid: xfs-linux:xfs-kern:23830a Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_vfsops.c')
-rw-r--r--fs/xfs/xfs_vfsops.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c
index 9142351df515..7227baee8994 100644
--- a/fs/xfs/xfs_vfsops.c
+++ b/fs/xfs/xfs_vfsops.c
@@ -307,6 +307,9 @@ xfs_start_flags(
307 if (ap->flags & XFSMNT_DIRSYNC) 307 if (ap->flags & XFSMNT_DIRSYNC)
308 mp->m_flags |= XFS_MOUNT_DIRSYNC; 308 mp->m_flags |= XFS_MOUNT_DIRSYNC;
309 309
310 if (ap->flags & XFSMNT_COMPAT_IOSIZE)
311 mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE;
312
310 /* 313 /*
311 * no recovery flag requires a read-only mount 314 * no recovery flag requires a read-only mount
312 */ 315 */
@@ -1645,6 +1648,9 @@ xfs_vget(
1645#define MNTOPT_64BITINODE "inode64" /* inodes can be allocated anywhere */ 1648#define MNTOPT_64BITINODE "inode64" /* inodes can be allocated anywhere */
1646#define MNTOPT_IKEEP "ikeep" /* do not free empty inode clusters */ 1649#define MNTOPT_IKEEP "ikeep" /* do not free empty inode clusters */
1647#define MNTOPT_NOIKEEP "noikeep" /* free empty inode clusters */ 1650#define MNTOPT_NOIKEEP "noikeep" /* free empty inode clusters */
1651#define MNTOPT_LARGEIO "largeio" /* report large I/O sizes in stat() */
1652#define MNTOPT_NOLARGEIO "nolargeio" /* do not report large I/O sizes
1653 * in stat(). */
1648 1654
1649STATIC unsigned long 1655STATIC unsigned long
1650suffix_strtoul(const char *cp, char **endp, unsigned int base) 1656suffix_strtoul(const char *cp, char **endp, unsigned int base)
@@ -1681,6 +1687,7 @@ xfs_parseargs(
1681 int dsunit, dswidth, vol_dsunit, vol_dswidth; 1687 int dsunit, dswidth, vol_dsunit, vol_dswidth;
1682 int iosize; 1688 int iosize;
1683 1689
1690 args->flags |= XFSMNT_COMPAT_IOSIZE;
1684#if 0 /* XXX: off by default, until some remaining issues ironed out */ 1691#if 0 /* XXX: off by default, until some remaining issues ironed out */
1685 args->flags |= XFSMNT_IDELETE; /* default to on */ 1692 args->flags |= XFSMNT_IDELETE; /* default to on */
1686#endif 1693#endif
@@ -1809,6 +1816,10 @@ xfs_parseargs(
1809 args->flags &= ~XFSMNT_IDELETE; 1816 args->flags &= ~XFSMNT_IDELETE;
1810 } else if (!strcmp(this_char, MNTOPT_NOIKEEP)) { 1817 } else if (!strcmp(this_char, MNTOPT_NOIKEEP)) {
1811 args->flags |= XFSMNT_IDELETE; 1818 args->flags |= XFSMNT_IDELETE;
1819 } else if (!strcmp(this_char, MNTOPT_LARGEIO)) {
1820 args->flags &= ~XFSMNT_COMPAT_IOSIZE;
1821 } else if (!strcmp(this_char, MNTOPT_NOLARGEIO)) {
1822 args->flags |= XFSMNT_COMPAT_IOSIZE;
1812 } else if (!strcmp(this_char, "osyncisdsync")) { 1823 } else if (!strcmp(this_char, "osyncisdsync")) {
1813 /* no-op, this is now the default */ 1824 /* no-op, this is now the default */
1814printk("XFS: osyncisdsync is now the default, option is deprecated.\n"); 1825printk("XFS: osyncisdsync is now the default, option is deprecated.\n");