]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xfs: add a XFS_INODE_TO_AGNO helper
authorChristoph Hellwig <hch@lst.de>
Fri, 15 May 2026 13:50:22 +0000 (15:50 +0200)
committerCarlos Maiolino <cem@kernel.org>
Tue, 9 Jun 2026 07:14:41 +0000 (09:14 +0200)
Add a shortcut for the common XFS_INO_TO_AGNO(mp, ip->i_ino) pattern.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
13 files changed:
fs/xfs/libxfs/xfs_dir2.c
fs/xfs/libxfs/xfs_format.h
fs/xfs/libxfs/xfs_ialloc.c
fs/xfs/libxfs/xfs_inode_util.c
fs/xfs/scrub/agheader_repair.c
fs/xfs/scrub/dir_repair.c
fs/xfs/scrub/inode_repair.c
fs/xfs/scrub/nlinks_repair.c
fs/xfs/scrub/parent_repair.c
fs/xfs/scrub/trace.h
fs/xfs/xfs_icache.c
fs/xfs/xfs_inode.c
fs/xfs/xfs_trace.h

index 495620cc001f49fce70eccbb70bce87cf60750db..9f96528ea407cba1d331a4a2b0084b41ab823b22 100644 (file)
@@ -919,7 +919,7 @@ xfs_dir_add_child(
        if (VFS_I(ip)->i_nlink == 0) {
                struct xfs_perag        *pag;
 
-               pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
+               pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(ip));
                error = xfs_iunlink_remove(tp, pag, ip);
                xfs_perag_put(pag);
                if (error)
@@ -1246,7 +1246,7 @@ xfs_dir_rename_children(
 
                ASSERT(VFS_I(du_wip->ip)->i_nlink == 0);
 
-               pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, du_wip->ip->i_ino));
+               pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(du_wip->ip));
                error = xfs_iunlink_remove(tp, pag, du_wip->ip);
                xfs_perag_put(pag);
                if (error)
index 779dac59b1f3babd10f52e4c1893f84c1d34ed52..36a00c174f1ea1ebd8970bbdc7fbeb9ec15a2478 100644 (file)
@@ -1276,6 +1276,8 @@ static inline bool xfs_dinode_is_metadir(const struct xfs_dinode *dip)
        XFS_INO_AGNO_BITS(mp) + XFS_INO_AGINO_BITS(mp)
 #define        XFS_INO_TO_AGNO(mp,i)           \
        ((xfs_agnumber_t)((i) >> XFS_INO_AGINO_BITS(mp)))
+#define        XFS_INODE_TO_AGNO(ip)           \
+       XFS_INO_TO_AGNO((ip)->i_mount, (ip)->i_ino)
 #define        XFS_INO_TO_AGINO(mp,i)          \
        ((xfs_agino_t)(i) & XFS_INO_MASK(XFS_INO_AGINO_BITS(mp)))
 #define        XFS_INO_TO_AGBNO(mp,i)          \
index dcef06ec0a027a5366f692a40e64256b0ba5701f..77201a1eb3c4c619c99888fddb62c098a5cf1f92 100644 (file)
@@ -1870,7 +1870,7 @@ xfs_dialloc_pick_ag(
        if (S_ISDIR(mode))
                return (atomic_inc_return(&mp->m_agirotor) - 1) % mp->m_maxagi;
 
-       start_agno = XFS_INO_TO_AGNO(mp, dp->i_ino);
+       start_agno = XFS_INODE_TO_AGNO(dp);
        if (start_agno >= mp->m_maxagi)
                start_agno = 0;
 
index 551fa51befb65e343e496fa4d5413e7303d67978..b478d16c0e20e74d4e975ddf3352a27a162a630b 100644 (file)
@@ -529,7 +529,7 @@ xfs_iunlink(
        ASSERT(VFS_I(ip)->i_mode != 0);
        trace_xfs_iunlink(ip);
 
-       pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
+       pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(ip));
 
        /* Get the agi buffer first.  It ensures lock ordering on the list. */
        error = xfs_read_agi(pag, tp, 0, &agibp);
index ae9ed5f280d042e11b51c4b7bbbfeafaba162969..c8d54ce6e363962535b140d4cbea3fe2cca2a028 100644 (file)
@@ -1116,9 +1116,7 @@ xrep_iunlink_igrab(
        struct xfs_perag        *pag,
        struct xfs_inode        *ip)
 {
-       struct xfs_mount        *mp = pag_mount(pag);
-
-       if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag_agno(pag))
+       if (XFS_INODE_TO_AGNO(ip) != pag_agno(pag))
                return false;
 
        if (!xfs_inode_on_unlinked_list(ip))
@@ -1142,7 +1140,7 @@ xrep_iunlink_visit(
        unsigned int            bucket;
        int                     error;
 
-       ASSERT(XFS_INO_TO_AGNO(mp, ip->i_ino) == pag_agno(ragi->sc->sa.pag));
+       ASSERT(XFS_INODE_TO_AGNO(ip) == pag_agno(ragi->sc->sa.pag));
        ASSERT(xfs_inode_on_unlinked_list(ip));
 
        agino = XFS_INO_TO_AGINO(mp, ip->i_ino);
@@ -1213,7 +1211,7 @@ xrep_iunlink_mark_incore(
                         * us to see this inode, so another lookup from the
                         * same index will not find it again.
                         */
-                       if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag_agno(pag))
+                       if (XFS_INODE_TO_AGNO(ip) != pag_agno(pag))
                                continue;
                        first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1);
                        if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino))
index 23b80c54aa60a775fa546673bc0ee66bda6d8f80..373172e522878cb4da84a61ea9a9ca3411cd623b 100644 (file)
@@ -1576,7 +1576,7 @@ xrep_dir_set_nlink(
         * count.  If the directory has no parent, it will be moved to the
         * orphanage.
         */
-       pag = xfs_perag_get(sc->mp, XFS_INO_TO_AGNO(sc->mp, dp->i_ino));
+       pag = xfs_perag_get(sc->mp, XFS_INODE_TO_AGNO(dp));
        if (!pag) {
                ASSERT(0);
                return -EFSCORRUPTED;
index 9738b9ce3f2df1a565b73548e470aa2d640a1503..8a2bf263ca3b84f6b5a6c17c2ffd8685dfa486c3 100644 (file)
@@ -2011,8 +2011,7 @@ xrep_inode_unlinked(
                struct xfs_perag        *pag;
                int                     error;
 
-               pag = xfs_perag_get(sc->mp,
-                               XFS_INO_TO_AGNO(sc->mp, sc->ip->i_ino));
+               pag = xfs_perag_get(sc->mp, XFS_INODE_TO_AGNO(sc->ip));
                error = xfs_iunlink_remove(sc->tp, pag, sc->ip);
                xfs_perag_put(pag);
                if (error)
index 9049215c6eaef78d242b79805dad6bb82bf9c367..3767dba9f515ad5eab66b95ceb2b03f0985d9eb4 100644 (file)
@@ -75,7 +75,7 @@ xrep_nlinks_iunlink_remove(
        struct xfs_perag        *pag;
        int                     error;
 
-       pag = xfs_perag_get(sc->mp, XFS_INO_TO_AGNO(sc->mp, sc->ip->i_ino));
+       pag = xfs_perag_get(sc->mp, XFS_INODE_TO_AGNO(sc->ip));
        error = xfs_iunlink_remove(sc->tp, pag, sc->ip);
        xfs_perag_put(pag);
        return error;
index 2ce0cefad3627de1e93b48f52cb9565436e6f192..a5dc7dc65f9822ac97567ce1c9887aa926895fd4 100644 (file)
@@ -1451,7 +1451,7 @@ xrep_parent_set_nondir_nlink(
                 * The file is on the unlinked list but we found parents.
                 * Remove the file from the unlinked list.
                 */
-               pag = xfs_perag_get(sc->mp, XFS_INO_TO_AGNO(sc->mp, ip->i_ino));
+               pag = xfs_perag_get(sc->mp, XFS_INODE_TO_AGNO(ip));
                if (!pag) {
                        ASSERT(0);
                        return -EFSCORRUPTED;
index 286c5f5e054449a722f8af90024110badd40acfc..6c684e9433db5677fbd3504e91ce40ad84d4aef3 100644 (file)
@@ -3473,7 +3473,7 @@ TRACE_EVENT(xrep_iunlink_reload_next,
        ),
        TP_fast_assign(
                __entry->dev = ip->i_mount->m_super->s_dev;
-               __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(ip);
                __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
                __entry->old_prev_agino = ip->i_prev_unlinked;
                __entry->prev_agino = prev_agino;
@@ -3503,7 +3503,7 @@ TRACE_EVENT(xrep_iunlink_reload_ondisk,
        ),
        TP_fast_assign(
                __entry->dev = ip->i_mount->m_super->s_dev;
-               __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(ip);
                __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
                __entry->nlink = VFS_I(ip)->i_nlink;
                __entry->next_agino = ip->i_next_unlinked;
@@ -3590,7 +3590,7 @@ TRACE_EVENT(xrep_iunlink_relink_next,
        ),
        TP_fast_assign(
                __entry->dev = ip->i_mount->m_super->s_dev;
-               __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(ip);
                __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
                __entry->next_agino = ip->i_next_unlinked;
                __entry->new_next_agino = next_agino;
@@ -3616,7 +3616,7 @@ TRACE_EVENT(xrep_iunlink_relink_prev,
        ),
        TP_fast_assign(
                __entry->dev = ip->i_mount->m_super->s_dev;
-               __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(ip);
                __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
                __entry->prev_agino = ip->i_prev_unlinked;
                __entry->new_prev_agino = prev_agino;
index 2040a9292ee650c6ea6bbc46a3113d53451d7127..73f06bb130759137d0403ff007f6359a316f7d6c 100644 (file)
@@ -427,8 +427,7 @@ xfs_iget_check_free_state(
                        xfs_warn(ip->i_mount,
 "Corruption detected! Free inode 0x%llx not marked free! (mode 0x%x)",
                                ip->i_ino, VFS_I(ip)->i_mode);
-                       xfs_agno_mark_sick(ip->i_mount,
-                                       XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino),
+                       xfs_agno_mark_sick(ip->i_mount, XFS_INODE_TO_AGNO(ip),
                                        XFS_SICK_AG_INOBT);
                        return -EFSCORRUPTED;
                }
@@ -437,8 +436,7 @@ xfs_iget_check_free_state(
                        xfs_warn(ip->i_mount,
 "Corruption detected! Free inode 0x%llx has blocks allocated!",
                                ip->i_ino);
-                       xfs_agno_mark_sick(ip->i_mount,
-                                       XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino),
+                       xfs_agno_mark_sick(ip->i_mount, XFS_INODE_TO_AGNO(ip),
                                        XFS_SICK_AG_INOBT);
                        return -EFSCORRUPTED;
                }
@@ -1287,7 +1285,7 @@ xfs_blockgc_set_iflag(
        ip->i_flags |= iflag;
        spin_unlock(&ip->i_flags_lock);
 
-       pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
+       pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(ip));
        spin_lock(&pag->pag_ici_lock);
 
        xfs_perag_set_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino),
@@ -1324,7 +1322,7 @@ xfs_blockgc_clear_iflag(
        if (!clear_tag)
                return;
 
-       pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
+       pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(ip));
        spin_lock(&pag->pag_ici_lock);
 
        xfs_perag_clear_inode_tag(pag, XFS_INO_TO_AGINO(mp, ip->i_ino),
@@ -1802,7 +1800,7 @@ restart:
                         * us to see this inode, so another lookup from the
                         * same index will not find it again.
                         */
-                       if (XFS_INO_TO_AGNO(mp, ip->i_ino) != pag_agno(pag))
+                       if (XFS_INODE_TO_AGNO(ip) != pag_agno(pag))
                                continue;
                        first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1);
                        if (first_index < XFS_INO_TO_AGINO(mp, ip->i_ino))
@@ -1916,7 +1914,7 @@ xfs_inodegc_set_reclaimable(
                ASSERT(0);
        }
 
-       pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
+       pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(ip));
        spin_lock(&pag->pag_ici_lock);
        spin_lock(&ip->i_flags_lock);
 
index 9978ac1422fc4f7e9d879c27aa8f0ede35678dbd..f049543726f0a1d6b2ff2f6576f4fda99a540a5b 100644 (file)
@@ -1357,7 +1357,7 @@ xfs_inactive_health(
        if (sick & XFS_SICK_INO_FORGET)
                return;
 
-       pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
+       pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(ip));
        if (!pag) {
                /* There had better still be a perag structure! */
                ASSERT(0);
@@ -1796,7 +1796,7 @@ xfs_ifree(
        ASSERT(ip->i_disk_size == 0 || !S_ISREG(VFS_I(ip)->i_mode));
        ASSERT(ip->i_nblocks == 0);
 
-       pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
+       pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(ip));
 
        error = xfs_inode_uninit(tp, pag, ip, &xic);
        if (error)
@@ -2305,8 +2305,7 @@ retry:
                        struct xfs_perag        *pag;
                        struct xfs_buf          *bp;
 
-                       pag = xfs_perag_get(mp,
-                                       XFS_INO_TO_AGNO(mp, inodes[i]->i_ino));
+                       pag = xfs_perag_get(mp, XFS_INODE_TO_AGNO(inodes[i]));
                        error = xfs_read_agi(pag, tp, 0, &bp);
                        xfs_perag_put(pag);
                        if (error)
@@ -2853,7 +2852,7 @@ xfs_inode_reload_unlinked_bucket(
        struct xfs_buf          *agibp;
        struct xfs_agi          *agi;
        struct xfs_perag        *pag;
-       xfs_agnumber_t          agno = XFS_INO_TO_AGNO(mp, ip->i_ino);
+       xfs_agnumber_t          agno = XFS_INODE_TO_AGNO(ip);
        xfs_agino_t             agino = XFS_INO_TO_AGINO(mp, ip->i_ino);
        xfs_agino_t             prev_agino, next_agino;
        unsigned int            bucket;
index 1c098cfc5c00d3cca2210aa1c7fa94be7e8aa72f..cd8b85dac7a88c210290a89e83940fadd2ce249a 100644 (file)
@@ -4529,7 +4529,7 @@ TRACE_EVENT(xfs_iunlink_reload_next,
        ),
        TP_fast_assign(
                __entry->dev = ip->i_mount->m_super->s_dev;
-               __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(ip);
                __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
                __entry->prev_agino = ip->i_prev_unlinked;
                __entry->next_agino = ip->i_next_unlinked;
@@ -4552,7 +4552,7 @@ TRACE_EVENT(xfs_inode_reload_unlinked_bucket,
        ),
        TP_fast_assign(
                __entry->dev = ip->i_mount->m_super->s_dev;
-               __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(ip);
                __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
        ),
        TP_printk("dev %d:%d agno 0x%x agino 0x%x bucket %u",
@@ -4572,7 +4572,7 @@ DECLARE_EVENT_CLASS(xfs_ag_inode_class,
        ),
        TP_fast_assign(
                __entry->dev = VFS_I(ip)->i_sb->s_dev;
-               __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(ip);
                __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
        ),
        TP_printk("dev %d:%d agno 0x%x agino 0x%x",
@@ -4769,8 +4769,7 @@ TRACE_EVENT(xfs_btree_commit_ifakeroot,
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
                __assign_str(name);
-               __entry->agno = XFS_INO_TO_AGNO(cur->bc_mp,
-                                       cur->bc_ino.ip->i_ino);
+               __entry->agno = XFS_INODE_TO_AGNO(cur->bc_ino.ip);
                __entry->agino = XFS_INO_TO_AGINO(cur->bc_mp,
                                        cur->bc_ino.ip->i_ino);
                __entry->levels = cur->bc_ino.ifake->if_levels;