Re: [PATCH 3/6] xfs: return maximum free size from xfs_rtany_summary()

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

 



On Tue, Jun 20, 2023 at 02:32:13PM -0700, Omar Sandoval wrote:
> From: Omar Sandoval <osandov@xxxxxx>
> 
> Instead of only returning whether there is any free space, return the
> maximum size, which is fast thanks to the previous commit. This will be
> used by two upcoming optimizations.
> 
> Signed-off-by: Omar Sandoval <osandov@xxxxxx>

Assuming I understood the changes in the /last/ two patches, this seems
like a reasonable thing to pass upwards...

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

--D

> ---
>  fs/xfs/xfs_rtalloc.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
> index d3c76532d20e..ba7d42e0090f 100644
> --- a/fs/xfs/xfs_rtalloc.c
> +++ b/fs/xfs/xfs_rtalloc.c
> @@ -50,7 +50,7 @@ xfs_rtany_summary(
>  	int		high,		/* high log2 extent size */
>  	xfs_rtblock_t	bbno,		/* bitmap block number */
>  	struct xfs_rtbuf_cache *rtbufc,	/* in/out: cache of realtime blocks */
> -	int		*stat)		/* out: any good extents here? */
> +	int		*maxlog)	/* out: maximum log2 extent size free */
>  {
>  	int		error;		/* error value */
>  	int		log;		/* loop counter, log2 of ext. size */
> @@ -60,7 +60,7 @@ xfs_rtany_summary(
>  	if (mp->m_rsum_cache) {
>  		high = min(high, mp->m_rsum_cache[bbno] - 1);
>  		if (low > high) {
> -			*stat = 0;
> +			*maxlog = -1;
>  			return 0;
>  		}
>  	}
> @@ -80,14 +80,14 @@ xfs_rtany_summary(
>  		 * If there are any, return success.
>  		 */
>  		if (sum) {
> -			*stat = 1;
> +			*maxlog = log;
>  			goto out;
>  		}
>  	}
>  	/*
>  	 * Found nothing, return failure.
>  	 */
> -	*stat = 0;
> +	*maxlog = -1;
>  out:
>  	/* There were no extents at levels > log. */
>  	if (mp->m_rsum_cache && log + 1 < mp->m_rsum_cache[bbno])
> @@ -427,7 +427,7 @@ xfs_rtallocate_extent_near(
>  	xfs_extlen_t	prod,		/* extent product factor */
>  	xfs_rtblock_t	*rtblock)	/* out: start block allocated */
>  {
> -	int		any;		/* any useful extents from summary */
> +	int		maxlog;		/* maximum useful extent from summary */
>  	xfs_rtblock_t	bbno;		/* bitmap block number */
>  	int		error;		/* error value */
>  	int		i;		/* bitmap block offset (loop control) */
> @@ -479,7 +479,7 @@ xfs_rtallocate_extent_near(
>  		 * starting in this bitmap block.
>  		 */
>  		error = xfs_rtany_summary(mp, tp, log2len, mp->m_rsumlevels - 1,
> -			bbno + i, rtbufc, &any);
> +			bbno + i, rtbufc, &maxlog);
>  		if (error) {
>  			return error;
>  		}
> @@ -487,7 +487,7 @@ xfs_rtallocate_extent_near(
>  		 * If there are any useful extents starting here, try
>  		 * allocating one.
>  		 */
> -		if (any) {
> +		if (maxlog >= 0) {
>  			/*
>  			 * On the positive side of the starting location.
>  			 */
> @@ -527,7 +527,7 @@ xfs_rtallocate_extent_near(
>  					 */
>  					error = xfs_rtany_summary(mp, tp,
>  						log2len, mp->m_rsumlevels - 1,
> -						bbno + j, rtbufc, &any);
> +						bbno + j, rtbufc, &maxlog);
>  					if (error) {
>  						return error;
>  					}
> @@ -539,7 +539,7 @@ xfs_rtallocate_extent_near(
>  					 * extent given, we've already tried
>  					 * that allocation, don't do it again.
>  					 */
> -					if (any)
> +					if (maxlog >= 0)
>  						continue;
>  					error = xfs_rtallocate_extent_block(mp,
>  						tp, bbno + j, minlen, maxlen,
> -- 
> 2.41.0
> 



[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