Re: [PATCH v2] xfs: check the remaining length of extent after roundup

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

 



On Thu, Nov 07, 2024 at 04:40:44PM +0800, Jinliang Zheng wrote:
> In xfs_alloc_compute_diff(), ensure that the remaining length of extent
> still meets the wantlen requirements after newbno1 is rounded.

What problem are you observing?

--D

> Signed-off-by: Jinliang Zheng <alexjlzheng@xxxxxxxxxxx>
> ---
> Changelog:
> 
> V2: Fix the error logic
> 
> V1: https://lore.kernel.org/linux-xfs/20241107070300.13535-1-alexjlzheng@xxxxxxxxxxx/#R
> ---
>  fs/xfs/libxfs/xfs_alloc.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
> index 22bdbb3e9980..1d4cc75b7318 100644
> --- a/fs/xfs/libxfs/xfs_alloc.c
> +++ b/fs/xfs/libxfs/xfs_alloc.c
> @@ -393,7 +393,8 @@ xfs_alloc_compute_diff(
>  	 * grows in the short term.
>  	 */
>  	if (freebno >= wantbno || (userdata && freeend < wantend)) {
> -		if ((newbno1 = roundup(freebno, alignment)) >= freeend)
> +		newbno1 = roundup(freebno, alignment);
> +		if (newbno1 >= freeend || newbno1 > freeend - wantlen)
>  			newbno1 = NULLAGBLOCK;
>  	} else if (freeend >= wantend && alignment > 1) {
>  		newbno1 = roundup(wantbno, alignment);
> @@ -414,6 +415,8 @@ xfs_alloc_compute_diff(
>  				newbno1 = newbno2;
>  		} else if (newbno2 != NULLAGBLOCK)
>  			newbno1 = newbno2;
> +		if (newbno1 > freeend - wantlen)
> +			newbno1 = NULLAGBLOCK;
>  	} else if (freeend >= wantend) {
>  		newbno1 = wantbno;
>  	} else if (alignment > 1) {
> -- 
> 2.41.1
> 
> 




[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