Re: [PATCH 1/4] xfs_repair: fix sizing of the incore rt space usage map calculation

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

 



On Fri, May 13, 2022 at 01:33:59 PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@xxxxxxxxxx>
>
> If someone creates a realtime volume exactly *one* extent in length, the
> sizing calculation for the incore rt space usage bitmap will be zero
> because the integer division here rounds down.  Use howmany() to round
> up.  Note that there can't be that many single-extent rt volumes since
> repair will corrupt them into zero-extent rt volumes, and we haven't
> gotten any reports.
>
> Found by running xfs/530 after fixing xfs_repair to check the rt bitmap.
>

Looks good.

Reviewed-by: Chandan Babu R <chandan.babu@xxxxxxxxxx>

> Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx>
> Reviewed-by: Christoph Hellwig <hch@xxxxxx>
> ---
>  repair/incore.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
>
> diff --git a/repair/incore.c b/repair/incore.c
> index 4ffe18ab..10a8c2a8 100644
> --- a/repair/incore.c
> +++ b/repair/incore.c
> @@ -209,7 +209,7 @@ init_rt_bmap(
>  	if (mp->m_sb.sb_rextents == 0)
>  		return;
>  
> -	rt_bmap_size = roundup(mp->m_sb.sb_rextents / (NBBY / XR_BB),
> +	rt_bmap_size = roundup(howmany(mp->m_sb.sb_rextents, (NBBY / XR_BB)),
>  			       sizeof(uint64_t));
>  
>  	rt_bmap = memalign(sizeof(uint64_t), rt_bmap_size);


-- 
chandan



[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