]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
repair: request inode buffers sized to fit one inode cluster
authorDarrick J. Wong <darrick.wong@oracle.com>
Sun, 20 Dec 2015 23:54:39 +0000 (10:54 +1100)
committerDave Chinner <david@fromorbit.com>
Sun, 20 Dec 2015 23:54:39 +0000 (10:54 +1100)
In get_agino_buf, grab inode buffers using the same size as the inode
processing code.  Since the inode processing code uses that same
buffer size, this means that get_agino_buf can serve requests from the
cache instead of pointlessly dropping the cache entry and screaming
about it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
repair/dinode.c

index 3fec9f40e8509d75d03c6b398cdf07906531ad3f..df28e9eae5e15841607756bbfe8ccca6389f197e 100644 (file)
@@ -850,7 +850,8 @@ get_agino_buf(xfs_mount_t    *mp,
        if ((irec = find_inode_rec(mp, agno, agino)) == NULL)
                return(NULL);
 
-       size = XFS_FSB_TO_BB(mp, MAX(1, XFS_INODES_PER_CHUNK/inodes_per_block));
+       size = MAX(1, XFS_FSB_TO_BB(mp,
+                       mp->m_inode_cluster_size >> mp->m_sb.sb_blocklog));
        bp = libxfs_readbuf(mp->m_dev, XFS_AGB_TO_DADDR(mp, agno,
                XFS_AGINO_TO_AGBNO(mp, irec->ino_startnum)), size, 0,
                &xfs_inode_buf_ops);