[PATCH V4 3/7] xfs: xfs_attr_calc_size: Calculate Bmbt blks only once

Chandan Rajendra
2020-02-23T07:28:15Z

The number of Bmbt blocks that is required can be calculated only once by
passing the sum of total number of dabtree blocks and remote blocks to
XFS_NEXTENTADD_SPACE_RES() macro.

Signed-off-by: Chandan Rajendra <chandanrlinux@gmail.com>
---
fs/xfs/libxfs/xfs_attr.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
index 942ba552e0bdd..a708b142f69b6 100644
--- a/fs/xfs/libxfs/xfs_attr.c
+++ b/fs/xfs/libxfs/xfs_attr.c
@@ -154,12 +154,10 @@ xfs_attr_calc_size(
size = xfs_attr_leaf_newentsize(args->geo, args->namelen,
args->valuelen, local);
total_dablks = XFS_DAENTER_BLOCKS(mp, XFS_ATTR_FORK);
- bmbt_blks = XFS_DAENTER_BMAPS(mp, XFS_ATTR_FORK);
if (*local) {
if (size > (args->geo->blksize / 2)) {
/* Double split possible */
total_dablks *= 2;
- bmbt_blks *= 2;
}
rmt_blks = 0;
} else {
@@ -168,10 +166,11 @@ xfs_attr_calc_size(
* make room for the attribute value itself.
*/
rmt_blks = xfs_attr3_rmt_blocks(mp, args->valuelen);
- bmbt_blks += XFS_NEXTENTADD_SPACE_RES(mp, rmt_blks,
- XFS_ATTR_FORK);
}

+ bmbt_blks = XFS_NEXTENTADD_SPACE_RES(mp, total_dablks + rmt_blks,
+ XFS_ATTR_FORK);
+
return total_dablks + rmt_blks + bmbt_blks;
}

--
2.19.1