From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> The functions mk_rsumino and rtinit both allocate transactions to create the realtime summary inode. In order to allocate and map blocks to the rtsummary file, these transactions require a block reservation. However, despite the comments in mk_rsumino about lifting the code from mkfs, it doesn't actually copy the same reservation calculation that mkfs uses in rtinit(). Practically speaking this has no effect since userspace doesn't care about transaction block reservations, but fix this logic bomb anyway. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- repair/phase6.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repair/phase6.c b/repair/phase6.c index d4b6a5cf..afa65c51 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -815,7 +815,7 @@ mk_rsumino(xfs_mount_t *mp) tres.tr_logcount = XFS_DEFAULT_PERM_LOG_COUNT; tres.tr_logflags = XFS_TRANS_PERM_LOG_RES; error = -libxfs_trans_alloc(mp, &tres, - mp->m_sb.sb_rbmblocks + (XFS_BM_MAXLEVELS(mp,XFS_DATA_FORK) - 1), + nsumblocks + (XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) - 1), 0, 0, &tp); if (error) res_failed(error);