Re: [PATCH 8/8] xfs: replace xfs_qm_get_rtblks with a direct call to xfs_bmap_count_leaves

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 29, 2017 at 07:48:35PM +0200, Christoph Hellwig wrote:
> Use the existing functionality instead of directly poking into the extent
> list.
> 
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>

> ---
>  fs/xfs/xfs_qm.c | 44 ++++++++++++--------------------------------
>  1 file changed, 12 insertions(+), 32 deletions(-)
> 
> diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
> index 15751dc2a27d..010a13a201aa 100644
> --- a/fs/xfs/xfs_qm.c
> +++ b/fs/xfs/xfs_qm.c
> @@ -31,6 +31,7 @@
>  #include "xfs_error.h"
>  #include "xfs_bmap.h"
>  #include "xfs_bmap_btree.h"
> +#include "xfs_bmap_util.h"
>  #include "xfs_trans.h"
>  #include "xfs_trans_space.h"
>  #include "xfs_qm.h"
> @@ -1120,31 +1121,6 @@ xfs_qm_quotacheck_dqadjust(
>  	return 0;
>  }
>  
> -STATIC int
> -xfs_qm_get_rtblks(
> -	xfs_inode_t	*ip,
> -	xfs_qcnt_t	*O_rtblks)
> -{
> -	xfs_filblks_t	rtblks;			/* total rt blks */
> -	xfs_extnum_t	idx;			/* extent record index */
> -	xfs_ifork_t	*ifp;			/* inode fork pointer */
> -	xfs_extnum_t	nextents;		/* number of extent entries */
> -	int		error;
> -
> -	ASSERT(XFS_IS_REALTIME_INODE(ip));
> -	ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
> -	if (!(ifp->if_flags & XFS_IFEXTENTS)) {
> -		if ((error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK)))
> -			return error;
> -	}
> -	rtblks = 0;
> -	nextents = xfs_iext_count(ifp);
> -	for (idx = 0; idx < nextents; idx++)
> -		rtblks += xfs_bmbt_get_blockcount(xfs_iext_get_ext(ifp, idx));
> -	*O_rtblks = (xfs_qcnt_t)rtblks;
> -	return 0;
> -}
> -
>  /*
>   * callback routine supplied to bulkstat(). Given an inumber, find its
>   * dquots and update them to account for resources taken by that inode.
> @@ -1160,7 +1136,8 @@ xfs_qm_dqusage_adjust(
>  	int		*res)		/* result code value */
>  {
>  	xfs_inode_t	*ip;
> -	xfs_qcnt_t	nblks, rtblks = 0;
> +	xfs_qcnt_t	nblks;
> +	xfs_filblks_t	rtblks = 0;	/* total rt blks */
>  	int		error;
>  
>  	ASSERT(XFS_IS_QUOTA_RUNNING(mp));
> @@ -1190,12 +1167,15 @@ xfs_qm_dqusage_adjust(
>  	ASSERT(ip->i_delayed_blks == 0);
>  
>  	if (XFS_IS_REALTIME_INODE(ip)) {
> -		/*
> -		 * Walk thru the extent list and count the realtime blocks.
> -		 */
> -		error = xfs_qm_get_rtblks(ip, &rtblks);
> -		if (error)
> -			goto error0;
> +		struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
> +
> +		if (!(ifp->if_flags & XFS_IFEXTENTS)) {
> +			error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK);
> +			if (error)
> +				goto error0;
> +		}
> +
> +		xfs_bmap_count_leaves(ifp, &rtblks);
>  	}
>  
>  	nblks = (xfs_qcnt_t)ip->i_d.di_nblocks - rtblks;
> -- 
> 2.11.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux