aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
authorVlad Apostolov <vapo@sgi.com>2007-09-14 01:23:44 -0400
committerTim Shimmin <tes@chook.melbourne.sgi.com>2007-10-15 22:20:39 -0400
commit574342f4ad450b33bc85ec53210b8aa8bfff2fcf (patch)
treed8e6cb9de0ccd485fc1d457a8d573f9f72099240 /fs/xfs
parent5903c4956f7b429f515ba107d9c04bbbe7ce8f9d (diff)
[XFS] fix when DMAPI mount option processing happens
Fix for a regression caused by a recent patch that moved the DMAPI mount option processing inside xfs_parseargs(). The DMAPI mount option used to be processed in the DMAPI module loaded before xfs_parseargs() was invoked. SGI-PV: 970451 SGI-Modid: xfs-linux-melb:xfs-kern:29683a Signed-off-by: Vlad Apostolov <vapo@sgi.com> Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Tim Shimmin <tes@sgi.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/xfs_vfsops.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c
index 3bba1a6aba8b..23579ff374c5 100644
--- a/fs/xfs/xfs_vfsops.c
+++ b/fs/xfs/xfs_vfsops.c
@@ -1763,18 +1763,7 @@ xfs_parseargs(
1763 char *this_char, *value, *eov; 1763 char *this_char, *value, *eov;
1764 int dsunit, dswidth, vol_dsunit, vol_dswidth; 1764 int dsunit, dswidth, vol_dsunit, vol_dswidth;
1765 int iosize; 1765 int iosize;
1766 1766 int ikeep = 0;
1767 /*
1768 * Applications using DMI filesystems often expect the
1769 * inode generation number to be monotonically increasing.
1770 * If we delete inode chunks we break this assumption, so
1771 * keep unused inode chunks on disk for DMI filesystems
1772 * until we come up with a better solution.
1773 * Note that if "ikeep" or "noikeep" mount options are
1774 * supplied, then they are honored.
1775 */
1776 if (!(args->flags & XFSMNT_DMAPI))
1777 args->flags |= XFSMNT_IDELETE;
1778 1767
1779 args->flags |= XFSMNT_BARRIER; 1768 args->flags |= XFSMNT_BARRIER;
1780 args->flags2 |= XFSMNT2_COMPAT_IOSIZE; 1769 args->flags2 |= XFSMNT2_COMPAT_IOSIZE;
@@ -1905,6 +1894,7 @@ xfs_parseargs(
1905 } else if (!strcmp(this_char, MNTOPT_NOBARRIER)) { 1894 } else if (!strcmp(this_char, MNTOPT_NOBARRIER)) {
1906 args->flags &= ~XFSMNT_BARRIER; 1895 args->flags &= ~XFSMNT_BARRIER;
1907 } else if (!strcmp(this_char, MNTOPT_IKEEP)) { 1896 } else if (!strcmp(this_char, MNTOPT_IKEEP)) {
1897 ikeep = 1;
1908 args->flags &= ~XFSMNT_IDELETE; 1898 args->flags &= ~XFSMNT_IDELETE;
1909 } else if (!strcmp(this_char, MNTOPT_NOIKEEP)) { 1899 } else if (!strcmp(this_char, MNTOPT_NOIKEEP)) {
1910 args->flags |= XFSMNT_IDELETE; 1900 args->flags |= XFSMNT_IDELETE;
@@ -2003,6 +1993,18 @@ xfs_parseargs(
2003 return EINVAL; 1993 return EINVAL;
2004 } 1994 }
2005 1995
1996 /*
1997 * Applications using DMI filesystems often expect the
1998 * inode generation number to be monotonically increasing.
1999 * If we delete inode chunks we break this assumption, so
2000 * keep unused inode chunks on disk for DMI filesystems
2001 * until we come up with a better solution.
2002 * Note that if "ikeep" or "noikeep" mount options are
2003 * supplied, then they are honored.
2004 */
2005 if (!(args->flags & XFSMNT_DMAPI) && !ikeep)
2006 args->flags |= XFSMNT_IDELETE;
2007
2006 if ((args->flags & XFSMNT_NOALIGN) != XFSMNT_NOALIGN) { 2008 if ((args->flags & XFSMNT_NOALIGN) != XFSMNT_NOALIGN) {
2007 if (dsunit) { 2009 if (dsunit) {
2008 args->sunit = dsunit; 2010 args->sunit = dsunit;