From 2703398a59ddfbb72893163600906d3f4ea1871c Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 21 Dec 2015 10:54:39 +1100 Subject: [PATCH] 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 --- repair/dinode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); -- 2.47.2