xfs: use XFS_BMAP_BMDR_SPACE vs. XFS_BROOT_SIZE_ADJ
XFS_BROOT_SIZE_ADJ is an undocumented macro which accounts for the difference in size between the on-disk and in-core btree root. It's much clearer to just use the newly-added XFS_BMAP_BMDR_SPACE macro which gives us the on-disk size directly. In one case, we must test that the if_broot exists before applying the macro, however. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Ben Myers <bpm@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
parent
83e782e1a1
commit
a69c7c0772
fs/xfs
@ -132,9 +132,6 @@ typedef enum xfs_dinode_fmt {
|
|||||||
#define XFS_LITINO(mp, version) \
|
#define XFS_LITINO(mp, version) \
|
||||||
((int)(((mp)->m_sb.sb_inodesize) - xfs_dinode_size(version)))
|
((int)(((mp)->m_sb.sb_inodesize) - xfs_dinode_size(version)))
|
||||||
|
|
||||||
#define XFS_BROOT_SIZE_ADJ(ip) \
|
|
||||||
(XFS_BMBT_BLOCK_LEN((ip)->i_mount) - sizeof(xfs_bmdr_block_t))
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Inode data & attribute fork sizes, per inode.
|
* Inode data & attribute fork sizes, per inode.
|
||||||
*/
|
*/
|
||||||
|
@ -2156,8 +2156,8 @@ xfs_iroot_realloc(
|
|||||||
np = (char *)XFS_BMAP_BROOT_PTR_ADDR(mp, ifp->if_broot, 1,
|
np = (char *)XFS_BMAP_BROOT_PTR_ADDR(mp, ifp->if_broot, 1,
|
||||||
(int)new_size);
|
(int)new_size);
|
||||||
ifp->if_broot_bytes = (int)new_size;
|
ifp->if_broot_bytes = (int)new_size;
|
||||||
ASSERT(ifp->if_broot_bytes <=
|
ASSERT(XFS_BMAP_BMDR_SPACE(ifp->if_broot) <=
|
||||||
XFS_IFORK_SIZE(ip, whichfork) + XFS_BROOT_SIZE_ADJ(ip));
|
XFS_IFORK_SIZE(ip, whichfork));
|
||||||
memmove(np, op, cur_max * (uint)sizeof(xfs_dfsbno_t));
|
memmove(np, op, cur_max * (uint)sizeof(xfs_dfsbno_t));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2210,8 +2210,9 @@ xfs_iroot_realloc(
|
|||||||
kmem_free(ifp->if_broot);
|
kmem_free(ifp->if_broot);
|
||||||
ifp->if_broot = new_broot;
|
ifp->if_broot = new_broot;
|
||||||
ifp->if_broot_bytes = (int)new_size;
|
ifp->if_broot_bytes = (int)new_size;
|
||||||
ASSERT(ifp->if_broot_bytes <=
|
if (ifp->if_broot)
|
||||||
XFS_IFORK_SIZE(ip, whichfork) + XFS_BROOT_SIZE_ADJ(ip));
|
ASSERT(XFS_BMAP_BMDR_SPACE(ifp->if_broot) <=
|
||||||
|
XFS_IFORK_SIZE(ip, whichfork));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2522,9 +2523,8 @@ xfs_iflush_fork(
|
|||||||
if ((iip->ili_fields & brootflag[whichfork]) &&
|
if ((iip->ili_fields & brootflag[whichfork]) &&
|
||||||
(ifp->if_broot_bytes > 0)) {
|
(ifp->if_broot_bytes > 0)) {
|
||||||
ASSERT(ifp->if_broot != NULL);
|
ASSERT(ifp->if_broot != NULL);
|
||||||
ASSERT(ifp->if_broot_bytes <=
|
ASSERT(XFS_BMAP_BMDR_SPACE(ifp->if_broot) <=
|
||||||
(XFS_IFORK_SIZE(ip, whichfork) +
|
XFS_IFORK_SIZE(ip, whichfork));
|
||||||
XFS_BROOT_SIZE_ADJ(ip)));
|
|
||||||
xfs_bmbt_to_bmdr(mp, ifp->if_broot, ifp->if_broot_bytes,
|
xfs_bmbt_to_bmdr(mp, ifp->if_broot, ifp->if_broot_bytes,
|
||||||
(xfs_bmdr_block_t *)cp,
|
(xfs_bmdr_block_t *)cp,
|
||||||
XFS_DFORK_SIZE(dip, mp, whichfork));
|
XFS_DFORK_SIZE(dip, mp, whichfork));
|
||||||
|
Loading…
Reference in New Issue
Block a user