[XFS] If you mount an XFS filesystem with no mount options at all, then
authorJosef Jeff Sipek <jeffpc@josefsipek.net>
Fri, 29 Feb 2008 02:58:40 +0000 (13:58 +1100)
committerNiv Sardi <xaiki@oss.sgi.com>
Fri, 29 Feb 2008 04:37:56 +0000 (20:37 -0800)
commit1bd960ee2b1231759bd485aad0fa483c2f793a3b
tree557463c5faac349791e14890f35668e4c1bcb639
parent7704a8b6fc4a8f51599eb2af4dcf1e2ac9c7e576
[XFS] If you mount an XFS filesystem with no mount options at all, then
the "ikeep" option is set rather than "noikeep".

This regression was introduced in 970451.

With no mount options specified, xfs_parseargs() does the following:

int ikeep = 0;

args->flags |= XFSMNT_BARRIER;

args->flags2 |= XFSMNT2_COMPAT_IOSIZE;

if (!options)

goto done;

It only sets the above two options by default and before, it also used to
set XFSMNT_IDELETE by default.

If options are specified, then

if (!(args->flags & XFSMNT_DMAPI) && !ikeep)

args->flags |= XFSMNT_IDELETE;

is executed later on which is skipped by the "goto done;" above.

The solution is to invert the logic.

SGI-PV: 977771
SGI-Modid: xfs-linux-melb:xfs-kern:30590a

Signed-off-by: Niv Sardi <xaiki@sgi.com>
Signed-off-by: Barry Naujok <bnaujok@sgi.com>
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
fs/xfs/linux-2.6/xfs_super.c
fs/xfs/xfs_clnt.h
fs/xfs/xfs_ialloc.c
fs/xfs/xfs_mount.h
fs/xfs/xfs_vfsops.c