xfs: Use uint64_t to count maximum blocks that can be used by BMBT
authorChandan Babu R <chandan.babu@oracle.com>
Tue, 16 Nov 2021 09:20:01 +0000 (09:20 +0000)
committerChandan Babu R <chandan.babu@oracle.com>
Mon, 11 Apr 2022 04:11:19 +0000 (04:11 +0000)
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
fs/xfs/libxfs/xfs_bmap.c

index 9f38e33d6ce2d14045f7236a11511b7a18cb4194..b317226fb4babed5e393848a694004af9567eaa0 100644 (file)
@@ -52,9 +52,9 @@ xfs_bmap_compute_maxlevels(
        xfs_mount_t     *mp,            /* file system mount structure */
        int             whichfork)      /* data or attr fork */
 {
-       int             level;          /* btree level */
-       uint            maxblocks;      /* max blocks at this level */
+       uint64_t        maxblocks;      /* max blocks at this level */
        xfs_extnum_t    maxleafents;    /* max leaf entries possible */
+       int             level;          /* btree level */
        int             maxrootrecs;    /* max records in root block */
        int             minleafrecs;    /* min records in leaf block */
        int             minnoderecs;    /* min records in node block */
@@ -88,7 +88,7 @@ xfs_bmap_compute_maxlevels(
                if (maxblocks <= maxrootrecs)
                        maxblocks = 1;
                else
-                       maxblocks = (maxblocks + minnoderecs - 1) / minnoderecs;
+                       maxblocks = howmany_64(maxblocks, minnoderecs);
        }
        mp->m_bm_maxlevels[whichfork] = level;
        ASSERT(mp->m_bm_maxlevels[whichfork] <= xfs_bmbt_maxlevels_ondisk());