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