From: Darrick J. Wong Date: Sun, 20 Dec 2015 23:54:39 +0000 (+1100) Subject: repair: request inode buffers sized to fit one inode cluster X-Git-Tag: v4.5.0-rc1~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2703398a59ddfbb72893163600906d3f4ea1871c;p=thirdparty%2Fxfsprogs-dev.git repair: request inode buffers sized to fit one inode cluster 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 Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner --- diff --git a/repair/dinode.c b/repair/dinode.c index 3fec9f40e..df28e9eae 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -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);