]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: add a xfs_agino_to_ino helper
authorChristoph Hellwig <hch@lst.de>
Mon, 25 Nov 2024 21:14:12 +0000 (13:14 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 24 Dec 2024 02:01:23 +0000 (18:01 -0800)
Source kernel commit: 6abd82ab6ea48430c13caebaad436ca6b5f2c34d

Add a helpers to convert an agino to an ino based on a pag structure.

This provides a simpler conversion and better type safety compared to the
existing code that passes the mount structure and the agno separately.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
libxfs/xfs_ag.h
libxfs/xfs_ialloc.c

index c0a30141ddc330ed20e74350c2cc0e6e6fd91475..e0f567d90debeedaf611022b04c143d542692094 100644 (file)
@@ -346,4 +346,12 @@ xfs_agbno_to_daddr(
        return XFS_AGB_TO_DADDR(pag->pag_mount, pag->pag_agno, agbno);
 }
 
+static inline xfs_ino_t
+xfs_agino_to_ino(
+       struct xfs_perag        *pag,
+       xfs_agino_t             agino)
+{
+       return XFS_AGINO_TO_INO(pag->pag_mount, pag->pag_agno, agino);
+}
+
 #endif /* __LIBXFS_AG_H */
index 6694ee2370411a4f7a20ee63570bab89c353fdf0..01b2e2d8c27c2266ea8cb0870b8cc1c7e02fb3e7 100644 (file)
@@ -909,8 +909,7 @@ sparse_alloc:
                if (error == -EFSCORRUPTED) {
                        xfs_alert(args.mp,
        "invalid sparse inode record: ino 0x%llx holemask 0x%x count %u",
-                                 XFS_AGINO_TO_INO(args.mp, pag->pag_agno,
-                                                  rec.ir_startino),
+                                 xfs_agino_to_ino(pag, rec.ir_startino),
                                  rec.ir_holemask, rec.ir_count);
                        xfs_force_shutdown(args.mp, SHUTDOWN_CORRUPT_INCORE);
                }
@@ -1329,7 +1328,7 @@ alloc_inode:
        ASSERT(offset < XFS_INODES_PER_CHUNK);
        ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) %
                                   XFS_INODES_PER_CHUNK) == 0);
-       ino = XFS_AGINO_TO_INO(mp, pag->pag_agno, rec.ir_startino + offset);
+       ino = xfs_agino_to_ino(pag, rec.ir_startino + offset);
 
        if (xfs_ag_has_sickness(pag, XFS_SICK_AG_INODES)) {
                error = xfs_dialloc_check_ino(pag, tp, ino);
@@ -1610,7 +1609,7 @@ xfs_dialloc_ag(
        ASSERT(offset < XFS_INODES_PER_CHUNK);
        ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) %
                                   XFS_INODES_PER_CHUNK) == 0);
-       ino = XFS_AGINO_TO_INO(mp, pag->pag_agno, rec.ir_startino + offset);
+       ino = xfs_agino_to_ino(pag, rec.ir_startino + offset);
 
        if (xfs_ag_has_sickness(pag, XFS_SICK_AG_INODES)) {
                error = xfs_dialloc_check_ino(pag, tp, ino);
@@ -2117,8 +2116,7 @@ xfs_difree_inobt(
        if (!xfs_has_ikeep(mp) && rec.ir_free == XFS_INOBT_ALL_FREE &&
            mp->m_sb.sb_inopblock <= XFS_INODES_PER_CHUNK) {
                xic->deleted = true;
-               xic->first_ino = XFS_AGINO_TO_INO(mp, pag->pag_agno,
-                               rec.ir_startino);
+               xic->first_ino = xfs_agino_to_ino(pag, rec.ir_startino);
                xic->alloc = xfs_inobt_irec_to_allocmask(&rec);
 
                /*
@@ -2317,10 +2315,10 @@ xfs_difree(
                return -EINVAL;
        }
        agino = XFS_INO_TO_AGINO(mp, inode);
-       if (inode != XFS_AGINO_TO_INO(mp, pag->pag_agno, agino))  {
-               xfs_warn(mp, "%s: inode != XFS_AGINO_TO_INO() (%llu != %llu).",
+       if (inode != xfs_agino_to_ino(pag, agino))  {
+               xfs_warn(mp, "%s: inode != xfs_agino_to_ino() (%llu != %llu).",
                        __func__, (unsigned long long)inode,
-                       (unsigned long long)XFS_AGINO_TO_INO(mp, pag->pag_agno, agino));
+                       (unsigned long long)xfs_agino_to_ino(pag, agino));
                ASSERT(0);
                return -EINVAL;
        }
@@ -2451,7 +2449,7 @@ xfs_imap(
        agino = XFS_INO_TO_AGINO(mp, ino);
        agbno = XFS_AGINO_TO_AGBNO(mp, agino);
        if (agbno >= mp->m_sb.sb_agblocks ||
-           ino != XFS_AGINO_TO_INO(mp, pag->pag_agno, agino)) {
+           ino != xfs_agino_to_ino(pag, agino)) {
                error = -EINVAL;
 #ifdef DEBUG
                /*
@@ -2466,11 +2464,11 @@ xfs_imap(
                                __func__, (unsigned long long)agbno,
                                (unsigned long)mp->m_sb.sb_agblocks);
                }
-               if (ino != XFS_AGINO_TO_INO(mp, pag->pag_agno, agino)) {
+               if (ino != xfs_agino_to_ino(pag, agino)) {
                        xfs_alert(mp,
-               "%s: ino (0x%llx) != XFS_AGINO_TO_INO() (0x%llx)",
+               "%s: ino (0x%llx) != xfs_agino_to_ino() (0x%llx)",
                                __func__, ino,
-                               XFS_AGINO_TO_INO(mp, pag->pag_agno, agino));
+                               xfs_agino_to_ino(pag, agino));
                }
                xfs_stack_trace();
 #endif /* DEBUG */