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.
(This function is currently unused, but the refink flag fixer code
wants to use it.)
Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
---
repair/dinode.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/repair/dinode.c b/repair/dinode.c
index 43142d6..269f9d8 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);
|