xfs: never try to scrub more than 64 inodes per inobt record
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 1 Feb 2019 17:08:49 +0000 (09:08 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Tue, 12 Feb 2019 00:06:38 +0000 (16:06 -0800)
Make sure we never check more than XFS_INODES_PER_CHUNK inodes for any
given inobt record since there can be more than one inobt record mapped
to an inode cluster.

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

index 882dc56..fd43168 100644 (file)
@@ -203,7 +203,8 @@ xchk_iallocbt_check_freemask(
        int                             error = 0;
 
        /* Make sure the freemask matches the inode records. */
-       nr_inodes = mp->m_inodes_per_cluster;
+       nr_inodes = min_t(unsigned int, XFS_INODES_PER_CHUNK,
+                       mp->m_inodes_per_cluster);
 
        for (agino = irec->ir_startino;
             agino < irec->ir_startino + XFS_INODES_PER_CHUNK;