diff options
Diffstat (limited to 'fs/xfs/xfs_icache.c')
| -rw-r--r-- | fs/xfs/xfs_icache.c | 35 | 
1 files changed, 25 insertions, 10 deletions
| diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 43005fbe8b1e..3861d61fb265 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -870,7 +870,7 @@ xfs_eofblocks_worker(   * based on the 'speculative_cow_prealloc_lifetime' tunable (5m by default).   * (We'll just piggyback on the post-EOF prealloc space workqueue.)   */ -STATIC void +void  xfs_queue_cowblocks(  	struct xfs_mount *mp)  { @@ -1536,8 +1536,23 @@ xfs_inode_free_quota_eofblocks(  	return __xfs_inode_free_quota_eofblocks(ip, xfs_icache_free_eofblocks);  } +static inline unsigned long +xfs_iflag_for_tag( +	int		tag) +{ +	switch (tag) { +	case XFS_ICI_EOFBLOCKS_TAG: +		return XFS_IEOFBLOCKS; +	case XFS_ICI_COWBLOCKS_TAG: +		return XFS_ICOWBLOCKS; +	default: +		ASSERT(0); +		return 0; +	} +} +  static void -__xfs_inode_set_eofblocks_tag( +__xfs_inode_set_blocks_tag(  	xfs_inode_t	*ip,  	void		(*execute)(struct xfs_mount *mp),  	void		(*set_tp)(struct xfs_mount *mp, xfs_agnumber_t agno, @@ -1552,10 +1567,10 @@ __xfs_inode_set_eofblocks_tag(  	 * Don't bother locking the AG and looking up in the radix trees  	 * if we already know that we have the tag set.  	 */ -	if (ip->i_flags & XFS_IEOFBLOCKS) +	if (ip->i_flags & xfs_iflag_for_tag(tag))  		return;  	spin_lock(&ip->i_flags_lock); -	ip->i_flags |= XFS_IEOFBLOCKS; +	ip->i_flags |= xfs_iflag_for_tag(tag);  	spin_unlock(&ip->i_flags_lock);  	pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); @@ -1587,13 +1602,13 @@ xfs_inode_set_eofblocks_tag(  	xfs_inode_t	*ip)  {  	trace_xfs_inode_set_eofblocks_tag(ip); -	return __xfs_inode_set_eofblocks_tag(ip, xfs_queue_eofblocks, +	return __xfs_inode_set_blocks_tag(ip, xfs_queue_eofblocks,  			trace_xfs_perag_set_eofblocks,  			XFS_ICI_EOFBLOCKS_TAG);  }  static void -__xfs_inode_clear_eofblocks_tag( +__xfs_inode_clear_blocks_tag(  	xfs_inode_t	*ip,  	void		(*clear_tp)(struct xfs_mount *mp, xfs_agnumber_t agno,  				    int error, unsigned long caller_ip), @@ -1603,7 +1618,7 @@ __xfs_inode_clear_eofblocks_tag(  	struct xfs_perag *pag;  	spin_lock(&ip->i_flags_lock); -	ip->i_flags &= ~XFS_IEOFBLOCKS; +	ip->i_flags &= ~xfs_iflag_for_tag(tag);  	spin_unlock(&ip->i_flags_lock);  	pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); @@ -1630,7 +1645,7 @@ xfs_inode_clear_eofblocks_tag(  	xfs_inode_t	*ip)  {  	trace_xfs_inode_clear_eofblocks_tag(ip); -	return __xfs_inode_clear_eofblocks_tag(ip, +	return __xfs_inode_clear_blocks_tag(ip,  			trace_xfs_perag_clear_eofblocks, XFS_ICI_EOFBLOCKS_TAG);  } @@ -1724,7 +1739,7 @@ xfs_inode_set_cowblocks_tag(  	xfs_inode_t	*ip)  {  	trace_xfs_inode_set_cowblocks_tag(ip); -	return __xfs_inode_set_eofblocks_tag(ip, xfs_queue_cowblocks, +	return __xfs_inode_set_blocks_tag(ip, xfs_queue_cowblocks,  			trace_xfs_perag_set_cowblocks,  			XFS_ICI_COWBLOCKS_TAG);  } @@ -1734,6 +1749,6 @@ xfs_inode_clear_cowblocks_tag(  	xfs_inode_t	*ip)  {  	trace_xfs_inode_clear_cowblocks_tag(ip); -	return __xfs_inode_clear_eofblocks_tag(ip, +	return __xfs_inode_clear_blocks_tag(ip,  			trace_xfs_perag_clear_cowblocks, XFS_ICI_COWBLOCKS_TAG);  } |