diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_super.c')
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_super.c | 21 | 
1 files changed, 18 insertions, 3 deletions
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index b0aa59e51fd..1e3a7ce804d 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -110,8 +110,10 @@ mempool_t *xfs_ioend_pool;  #define MNTOPT_GQUOTANOENF "gqnoenforce"/* group quota limit enforcement */  #define MNTOPT_PQUOTANOENF "pqnoenforce"/* project quota limit enforcement */  #define MNTOPT_QUOTANOENF  "qnoenforce"	/* same as uqnoenforce */ -#define MNTOPT_DELAYLOG   "delaylog"	/* Delayed loging enabled */ -#define MNTOPT_NODELAYLOG "nodelaylog"	/* Delayed loging disabled */ +#define MNTOPT_DELAYLOG    "delaylog"	/* Delayed logging enabled */ +#define MNTOPT_NODELAYLOG  "nodelaylog"	/* Delayed logging disabled */ +#define MNTOPT_DISCARD	   "discard"	/* Discard unused blocks */ +#define MNTOPT_NODISCARD   "nodiscard"	/* Do not discard unused blocks */  /*   * Table driven mount option parser. @@ -355,6 +357,10 @@ xfs_parseargs(  			mp->m_flags |= XFS_MOUNT_DELAYLOG;  		} else if (!strcmp(this_char, MNTOPT_NODELAYLOG)) {  			mp->m_flags &= ~XFS_MOUNT_DELAYLOG; +		} else if (!strcmp(this_char, MNTOPT_DISCARD)) { +			mp->m_flags |= XFS_MOUNT_DISCARD; +		} else if (!strcmp(this_char, MNTOPT_NODISCARD)) { +			mp->m_flags &= ~XFS_MOUNT_DISCARD;  		} else if (!strcmp(this_char, "ihashsize")) {  			xfs_warn(mp,  	"ihashsize no longer used, option is deprecated."); @@ -388,6 +394,13 @@ xfs_parseargs(  		return EINVAL;  	} +	if ((mp->m_flags & XFS_MOUNT_DISCARD) && +	    !(mp->m_flags & XFS_MOUNT_DELAYLOG)) { +		xfs_warn(mp, +	"the discard option is incompatible with the nodelaylog option"); +		return EINVAL; +	} +  #ifndef CONFIG_XFS_QUOTA  	if (XFS_IS_QUOTA_RUNNING(mp)) {  		xfs_warn(mp, "quota support not available in this kernel."); @@ -488,6 +501,7 @@ xfs_showargs(  		{ XFS_MOUNT_FILESTREAMS,	"," MNTOPT_FILESTREAM },  		{ XFS_MOUNT_GRPID,		"," MNTOPT_GRPID },  		{ XFS_MOUNT_DELAYLOG,		"," MNTOPT_DELAYLOG }, +		{ XFS_MOUNT_DISCARD,		"," MNTOPT_DISCARD },  		{ 0, NULL }  	};  	static struct proc_xfs_info xfs_info_unset[] = { @@ -911,7 +925,8 @@ xfs_fs_inode_init_once(   */  STATIC void  xfs_fs_dirty_inode( -	struct inode	*inode) +	struct inode	*inode, +	int		flags)  {  	barrier();  	XFS_I(inode)->i_update_core = 1;  |