xfs: fix off-by-one error in rtbitmap cross-reference
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 1 Feb 2019 17:08:53 +0000 (09:08 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Tue, 12 Feb 2019 00:06:40 +0000 (16:06 -0800)
Fix an off-by-one error in the realtime bitmap "is used" cross-reference
helper function if the realtime extent size is a single block.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
fs/xfs/scrub/rtbitmap.c

index 665d4bb..dbe115b 100644 (file)
@@ -141,9 +141,8 @@ xchk_xref_is_used_rt_space(
        startext = fsbno;
        endext = fsbno + len - 1;
        do_div(startext, sc->mp->m_sb.sb_rextsize);
-       if (do_div(endext, sc->mp->m_sb.sb_rextsize))
-               endext++;
-       extcount = endext - startext;
+       do_div(endext, sc->mp->m_sb.sb_rextsize);
+       extcount = endext - startext + 1;
        xfs_ilock(sc->mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP);
        error = xfs_rtalloc_extent_is_free(sc->mp, sc->tp, startext, extcount,
                        &is_free);