diff options
Diffstat (limited to 'fs/xfs/xfs_xattr.c')
| -rw-r--r-- | fs/xfs/xfs_xattr.c | 17 | 
1 files changed, 16 insertions, 1 deletions
diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c index 35e13e125ec6..c325a28b89a8 100644 --- a/fs/xfs/xfs_xattr.c +++ b/fs/xfs/xfs_xattr.c @@ -68,6 +68,18 @@ xfs_attr_rele_log_assist(  	xlog_drop_incompat_feat(mp->m_log);  } +static inline bool +xfs_attr_want_log_assist( +	struct xfs_mount	*mp) +{ +#ifdef DEBUG +	/* Logged xattrs require a V5 super for log_incompat */ +	return xfs_has_crc(mp) && xfs_globals.larp; +#else +	return false; +#endif +} +  /*   * Set or remove an xattr, having grabbed the appropriate logging resources   * prior to calling libxfs. @@ -80,11 +92,14 @@ xfs_attr_change(  	bool			use_logging = false;  	int			error; -	if (xfs_has_larp(mp)) { +	ASSERT(!(args->op_flags & XFS_DA_OP_LOGGED)); + +	if (xfs_attr_want_log_assist(mp)) {  		error = xfs_attr_grab_log_assist(mp);  		if (error)  			return error; +		args->op_flags |= XFS_DA_OP_LOGGED;  		use_logging = true;  	}  |