Commit 5e5c943c authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: revert "xfs: factor rmap btree size into the indlen calculations"

In commit fd26a880 we added a worst case estimate for rmapbt blocks
needed to satisfy the block mapping request.  Since then, we added the
ability to reserve enough space in each AG such that we should never run
out of blocks to grow the rmapbt, which makes this calculation
unnecessary.  Revert the commit because it makes the extra delalloc
indlen accounting unnecessary and incorrect.
Reported-by: default avatarEryu Guan <eguan@redhat.com>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 842f6e9f
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
#include "xfs_rmap.h" #include "xfs_rmap.h"
#include "xfs_ag_resv.h" #include "xfs_ag_resv.h"
#include "xfs_refcount.h" #include "xfs_refcount.h"
#include "xfs_rmap_btree.h"
#include "xfs_icache.h" #include "xfs_icache.h"
...@@ -192,12 +191,8 @@ xfs_bmap_worst_indlen( ...@@ -192,12 +191,8 @@ xfs_bmap_worst_indlen(
int maxrecs; /* maximum record count at this level */ int maxrecs; /* maximum record count at this level */
xfs_mount_t *mp; /* mount structure */ xfs_mount_t *mp; /* mount structure */
xfs_filblks_t rval; /* return value */ xfs_filblks_t rval; /* return value */
xfs_filblks_t orig_len;
mp = ip->i_mount; mp = ip->i_mount;
/* Calculate the worst-case size of the bmbt. */
orig_len = len;
maxrecs = mp->m_bmap_dmxr[0]; maxrecs = mp->m_bmap_dmxr[0];
for (level = 0, rval = 0; for (level = 0, rval = 0;
level < XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK); level < XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK);
...@@ -205,20 +200,12 @@ xfs_bmap_worst_indlen( ...@@ -205,20 +200,12 @@ xfs_bmap_worst_indlen(
len += maxrecs - 1; len += maxrecs - 1;
do_div(len, maxrecs); do_div(len, maxrecs);
rval += len; rval += len;
if (len == 1) { if (len == 1)
rval += XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) - return rval + XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) -
level - 1; level - 1;
break;
}
if (level == 0) if (level == 0)
maxrecs = mp->m_bmap_dmxr[1]; maxrecs = mp->m_bmap_dmxr[1];
} }
/* Calculate the worst-case size of the rmapbt. */
if (xfs_sb_version_hasrmapbt(&mp->m_sb))
rval += 1 + xfs_rmapbt_calc_size(mp, orig_len) +
mp->m_rmap_maxlevels;
return rval; return rval;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment