xfs: create a helper to compute the blockcount of a max sized remote value
authorDarrick J. Wong <djwong@kernel.org>
Thu, 2 May 2024 14:48:36 +0000 (07:48 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 2 May 2024 14:48:36 +0000 (07:48 -0700)
Create a helper function to compute the number of fsblocks needed to
store a maximally-sized extended attribute value.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Andrey Albershteyn <aalbersh@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/libxfs/xfs_attr.c
fs/xfs/libxfs/xfs_attr_remote.h
fs/xfs/scrub/reap.c

index 1c2a27fce08a9dea666dcd5ef08c65784c13798c..eb274d4d636d8f10bdbe268bb7f2327a6c2e751b 100644 (file)
@@ -1036,7 +1036,7 @@ xfs_attr_set(
                break;
        case XFS_ATTRUPDATE_REMOVE:
                XFS_STATS_INC(mp, xs_attr_remove);
-               rmt_blks = xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
+               rmt_blks = xfs_attr3_max_rmt_blocks(mp);
                break;
        }
 
index c64b04f91cafdd717f4568c54266ac54caf136ae..e3c6c7d774bf93e362ed9a54bde6eabab60b817c 100644 (file)
@@ -8,6 +8,12 @@
 
 unsigned int xfs_attr3_rmt_blocks(struct xfs_mount *mp, unsigned int attrlen);
 
+/* Number of rmt blocks needed to store the maximally sized attr value */
+static inline unsigned int xfs_attr3_max_rmt_blocks(struct xfs_mount *mp)
+{
+       return xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
+}
+
 int xfs_attr_rmtval_get(struct xfs_da_args *args);
 int xfs_attr_rmtval_stale(struct xfs_inode *ip, struct xfs_bmbt_irec *map,
                xfs_buf_flags_t incore_flags);
index 01ceaa4efa16bf3478589999364ee64a3769aa16..be283153c254e3e2d4bb275d437364216db6b78b 100644 (file)
@@ -223,7 +223,7 @@ xrep_bufscan_max_sectors(
        int                     max_fsbs;
 
        /* Remote xattr values are the largest buffers that we support. */
-       max_fsbs = xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
+       max_fsbs = xfs_attr3_max_rmt_blocks(mp);
 
        return XFS_FSB_TO_BB(mp, min_t(xfs_extlen_t, fsblocks, max_fsbs));
 }
@@ -806,7 +806,7 @@ xreap_bmapi_binval(
         * of the next hole.
         */
        off = imap->br_startoff + imap->br_blockcount;
-       max_off = off + xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
+       max_off = off + xfs_attr3_max_rmt_blocks(mp);
        while (off < max_off) {
                struct xfs_bmbt_irec    hmap;
                int                     nhmaps = 1;