diff options
author | David Chinner <dgc@sgi.com> | 2005-11-01 18:33:05 -0500 |
---|---|---|
committer | Nathan Scott <nathans@sgi.com> | 2005-11-01 18:33:05 -0500 |
commit | e8c8b3a79d85c22d3665b97dde843dc4d8d7ae37 (patch) | |
tree | a82b58ebc5c40474cdc53c91bd135b97034de565 /fs/xfs/xfs_vfsops.c | |
parent | ee34807a65aa0c5911dc27682863afca780a003e (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.c | 11 |
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 | ||
1649 | STATIC unsigned long | 1655 | STATIC unsigned long |
1650 | suffix_strtoul(const char *cp, char **endp, unsigned int base) | 1656 | suffix_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 */ |
1814 | printk("XFS: osyncisdsync is now the default, option is deprecated.\n"); | 1825 | printk("XFS: osyncisdsync is now the default, option is deprecated.\n"); |