]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs: clean up the ISVALID macro in xfs_bmap_adjacent
authorChristoph Hellwig <hch@lst.de>
Thu, 1 Aug 2024 01:26:48 +0000 (18:26 -0700)
committerChristoph Hellwig <hch@lst.de>
Thu, 1 Aug 2024 01:26:48 +0000 (18:26 -0700)
Source kernel commit: e3d7c2e3cc422e00a3c1187055b4cf11c1e55828

Turn the  ISVALID macro defined and used inside in xfs_bmap_adjacent
that relies on implict context into a proper inline function.

Signed-off-by: Christoph Hellwig <hch@lst.de>
libxfs/xfs_bmap.c

index 7f551f2065731684c2aed75832f9ea54c338e095..8bfc21957f2e66c2e81039982a3aec5dd0a9ab75 100644 (file)
@@ -3128,6 +3128,23 @@ xfs_bmap_extsize_align(
        return 0;
 }
 
+static inline bool
+xfs_bmap_adjacent_valid(
+       struct xfs_bmalloca     *ap,
+       xfs_fsblock_t           x,
+       xfs_fsblock_t           y)
+{
+       struct xfs_mount        *mp = ap->ip->i_mount;
+
+       if (XFS_IS_REALTIME_INODE(ap->ip) &&
+           (ap->datatype & XFS_ALLOC_USERDATA))
+               return x < mp->m_sb.sb_rblocks;
+
+       return XFS_FSB_TO_AGNO(mp, x) == XFS_FSB_TO_AGNO(mp, y) &&
+               XFS_FSB_TO_AGNO(mp, x) < mp->m_sb.sb_agcount &&
+               XFS_FSB_TO_AGBNO(mp, x) < mp->m_sb.sb_agblocks;
+}
+
 #define XFS_ALLOC_GAP_UNITS    4
 
 /* returns true if ap->blkno was modified */
@@ -3135,36 +3152,25 @@ bool
 xfs_bmap_adjacent(
        struct xfs_bmalloca     *ap)    /* bmap alloc argument struct */
 {
-       xfs_fsblock_t   adjust;         /* adjustment to block numbers */
-       xfs_mount_t     *mp;            /* mount point structure */
-       int             rt;             /* true if inode is realtime */
-
-#define        ISVALID(x,y)    \
-       (rt ? \
-               (x) < mp->m_sb.sb_rblocks : \
-               XFS_FSB_TO_AGNO(mp, x) == XFS_FSB_TO_AGNO(mp, y) && \
-               XFS_FSB_TO_AGNO(mp, x) < mp->m_sb.sb_agcount && \
-               XFS_FSB_TO_AGBNO(mp, x) < mp->m_sb.sb_agblocks)
-
-       mp = ap->ip->i_mount;
-       rt = XFS_IS_REALTIME_INODE(ap->ip) &&
-               (ap->datatype & XFS_ALLOC_USERDATA);
+       xfs_fsblock_t           adjust;         /* adjustment to block numbers */
+
        /*
         * If allocating at eof, and there's a previous real block,
         * try to use its last block as our starting point.
         */
        if (ap->eof && ap->prev.br_startoff != NULLFILEOFF &&
            !isnullstartblock(ap->prev.br_startblock) &&
-           ISVALID(ap->prev.br_startblock + ap->prev.br_blockcount,
-                   ap->prev.br_startblock)) {
+           xfs_bmap_adjacent_valid(ap,
+                       ap->prev.br_startblock + ap->prev.br_blockcount,
+                       ap->prev.br_startblock)) {
                ap->blkno = ap->prev.br_startblock + ap->prev.br_blockcount;
                /*
                 * Adjust for the gap between prevp and us.
                 */
                adjust = ap->offset -
                        (ap->prev.br_startoff + ap->prev.br_blockcount);
-               if (adjust &&
-                   ISVALID(ap->blkno + adjust, ap->prev.br_startblock))
+               if (adjust && xfs_bmap_adjacent_valid(ap, ap->blkno + adjust,
+                               ap->prev.br_startblock))
                        ap->blkno += adjust;
                return true;
        }
@@ -3187,7 +3193,8 @@ xfs_bmap_adjacent(
                    !isnullstartblock(ap->prev.br_startblock) &&
                    (prevbno = ap->prev.br_startblock +
                               ap->prev.br_blockcount) &&
-                   ISVALID(prevbno, ap->prev.br_startblock)) {
+                   xfs_bmap_adjacent_valid(ap, prevbno,
+                               ap->prev.br_startblock)) {
                        /*
                         * Calculate gap to end of previous block.
                         */
@@ -3203,8 +3210,8 @@ xfs_bmap_adjacent(
                         * number, then just use the end of the previous block.
                         */
                        if (prevdiff <= XFS_ALLOC_GAP_UNITS * ap->length &&
-                           ISVALID(prevbno + prevdiff,
-                                   ap->prev.br_startblock))
+                           xfs_bmap_adjacent_valid(ap, prevbno + prevdiff,
+                                       ap->prev.br_startblock))
                                prevbno += adjust;
                        else
                                prevdiff += adjust;
@@ -3236,9 +3243,11 @@ xfs_bmap_adjacent(
                         * offset by our length.
                         */
                        if (gotdiff <= XFS_ALLOC_GAP_UNITS * ap->length &&
-                           ISVALID(gotbno - gotdiff, gotbno))
+                           xfs_bmap_adjacent_valid(ap, gotbno - gotdiff,
+                                       gotbno))
                                gotbno -= adjust;
-                       else if (ISVALID(gotbno - ap->length, gotbno)) {
+                       else if (xfs_bmap_adjacent_valid(ap, gotbno - ap->length,
+                                       gotbno)) {
                                gotbno -= ap->length;
                                gotdiff += adjust - ap->length;
                        } else
@@ -3266,7 +3275,7 @@ xfs_bmap_adjacent(
                        return true;
                }
        }
-#undef ISVALID
+
        return false;
 }