xfs: move the di_nblocks field to struct xfs_inode
authorChristoph Hellwig <hch@lst.de>
Mon, 29 Mar 2021 18:11:40 +0000 (11:11 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 7 Apr 2021 21:37:03 +0000 (14:37 -0700)
In preparation of removing the historic icinode struct, move the nblocks
field into the containing xfs_inode structure.

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>
16 files changed:
fs/xfs/libxfs/xfs_bmap.c
fs/xfs/libxfs/xfs_bmap_btree.c
fs/xfs/libxfs/xfs_da_btree.c
fs/xfs/libxfs/xfs_inode_buf.c
fs/xfs/libxfs/xfs_inode_buf.h
fs/xfs/libxfs/xfs_inode_fork.c
fs/xfs/xfs_bmap_util.c
fs/xfs/xfs_icache.c
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode.h
fs/xfs/xfs_inode_item.c
fs/xfs/xfs_iops.c
fs/xfs/xfs_itable.c
fs/xfs/xfs_qm.c
fs/xfs/xfs_quotaops.c
fs/xfs/xfs_trans.c

index 7ae0920f04d71aa63c815ac7016e6199979a6e89..b2009f979ae856f6d2f003de04895d1025d679ef 100644 (file)
@@ -624,7 +624,7 @@ xfs_bmap_btree_to_extents(
                return error;
        xfs_rmap_ino_bmbt_owner(&oinfo, ip->i_ino, whichfork);
        xfs_bmap_add_free(cur->bc_tp, cbno, 1, &oinfo);
-       ip->i_d.di_nblocks--;
+       ip->i_nblocks--;
        xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, -1L);
        xfs_trans_binval(tp, cbp);
        if (cur->bc_bufs[0] == cbp)
@@ -726,7 +726,7 @@ xfs_bmap_extents_to_btree(
               args.agno >= XFS_FSB_TO_AGNO(mp, tp->t_firstblock));
        tp->t_firstblock = args.fsbno;
        cur->bc_ino.allocated++;
-       ip->i_d.di_nblocks++;
+       ip->i_nblocks++;
        xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, 1L);
        error = xfs_trans_get_buf(tp, mp->m_ddev_targp,
                        XFS_FSB_TO_DADDR(mp, args.fsbno),
@@ -908,7 +908,7 @@ xfs_bmap_local_to_extents(
        xfs_iext_insert(ip, &icur, &rec, 0);
 
        ifp->if_nextents = 1;
-       ip->i_d.di_nblocks = 1;
+       ip->i_nblocks = 1;
        xfs_trans_mod_dquot_byino(tp, ip,
                XFS_TRANS_DQ_BCOUNT, 1L);
        flags |= xfs_ilog_fext(whichfork);
@@ -3443,7 +3443,7 @@ xfs_bmap_btalloc_accounting(
        }
 
        /* data/attr fork only */
-       ap->ip->i_d.di_nblocks += args->len;
+       ap->ip->i_nblocks += args->len;
        xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE);
        if (ap->wasdel) {
                ap->ip->i_delayed_blks -= args->len;
@@ -4764,7 +4764,7 @@ xfs_bmapi_remap(
                ASSERT(got.br_startoff - bno >= len);
        }
 
-       ip->i_d.di_nblocks += len;
+       ip->i_nblocks += len;
        xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
 
        if (ifp->if_flags & XFS_IFBROOT) {
@@ -5355,7 +5355,7 @@ xfs_bmap_del_extent_real(
         * Adjust inode # blocks in the file.
         */
        if (nblks)
-               ip->i_d.di_nblocks -= nblks;
+               ip->i_nblocks -= nblks;
        /*
         * Adjust quota data.
         */
index 976659190d2753b6c8dd9250ebe85697b1a02d95..520db0c8f10a2df6a1a89f3cbcac56343597bda2 100644 (file)
@@ -260,7 +260,7 @@ xfs_bmbt_alloc_block(
        ASSERT(args.len == 1);
        cur->bc_tp->t_firstblock = args.fsbno;
        cur->bc_ino.allocated++;
-       cur->bc_ino.ip->i_d.di_nblocks++;
+       cur->bc_ino.ip->i_nblocks++;
        xfs_trans_log_inode(args.tp, cur->bc_ino.ip, XFS_ILOG_CORE);
        xfs_trans_mod_dquot_byino(args.tp, cur->bc_ino.ip,
                        XFS_TRANS_DQ_BCOUNT, 1L);
@@ -287,7 +287,7 @@ xfs_bmbt_free_block(
 
        xfs_rmap_ino_bmbt_owner(&oinfo, ip->i_ino, cur->bc_ino.whichfork);
        xfs_bmap_add_free(cur->bc_tp, fsbno, 1, &oinfo);
-       ip->i_d.di_nblocks--;
+       ip->i_nblocks--;
 
        xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
        xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, -1L);
index e46bc03365db2d84746965bed6f39980d537db4d..83ac9771bfb581f5ba8403add87acdd38f340c10 100644 (file)
@@ -2145,7 +2145,7 @@ xfs_da_grow_inode_int(
        struct xfs_trans        *tp = args->trans;
        struct xfs_inode        *dp = args->dp;
        int                     w = args->whichfork;
-       xfs_rfsblock_t          nblks = dp->i_d.di_nblocks;
+       xfs_rfsblock_t          nblks = dp->i_nblocks;
        struct xfs_bmbt_irec    map, *mapp;
        int                     nmap, error, got, i, mapi;
 
@@ -2211,7 +2211,7 @@ xfs_da_grow_inode_int(
        }
 
        /* account for newly allocated blocks in reserved blocks total */
-       args->total -= dp->i_d.di_nblocks - nblks;
+       args->total -= dp->i_nblocks - nblks;
 
 out_free_map:
        if (mapp != &map)
index 928c884c627b90526c9faf02cd4fc7c2dd543e75..e699669039c3a70cb52606174b8e7b3e86057cc1 100644 (file)
@@ -227,7 +227,7 @@ xfs_inode_from_disk(
        inode->i_ctime = xfs_inode_from_disk_ts(from, from->di_ctime);
 
        ip->i_disk_size = be64_to_cpu(from->di_size);
-       to->di_nblocks = be64_to_cpu(from->di_nblocks);
+       ip->i_nblocks = be64_to_cpu(from->di_nblocks);
        to->di_extsize = be32_to_cpu(from->di_extsize);
        to->di_forkoff = from->di_forkoff;
        to->di_flags    = be16_to_cpu(from->di_flags);
@@ -306,7 +306,7 @@ xfs_inode_to_disk(
        to->di_mode = cpu_to_be16(inode->i_mode);
 
        to->di_size = cpu_to_be64(ip->i_disk_size);
-       to->di_nblocks = cpu_to_be64(from->di_nblocks);
+       to->di_nblocks = cpu_to_be64(ip->i_nblocks);
        to->di_extsize = cpu_to_be32(from->di_extsize);
        to->di_nextents = cpu_to_be32(xfs_ifork_nextents(&ip->i_df));
        to->di_anextents = cpu_to_be16(xfs_ifork_nextents(ip->i_afp));
index c93ed0bc5735e0a403f585e0dc332288a3263398..f4e1a9010b0a47803739b4bf04b7c0f7d207ebd0 100644 (file)
@@ -17,7 +17,6 @@ struct xfs_dinode;
  */
 struct xfs_icdinode {
        uint16_t        di_flushiter;   /* incremented on flush */
-       xfs_rfsblock_t  di_nblocks;     /* # of direct & btree blocks used */
        xfs_extlen_t    di_extsize;     /* basic/minimum extent size for file */
        uint8_t         di_forkoff;     /* attr fork offs, <<3 for 64b align */
        uint16_t        di_flags;       /* random flags, XFS_DIFLAG_... */
index 5bdfac672c89f48952ca6d834ac7fb66cda2bb98..a8800ff03f9432adda0db987f6e33548410e447e 100644 (file)
@@ -194,7 +194,7 @@ xfs_iformat_btree(
                     nrecs == 0 ||
                     XFS_BMDR_SPACE_CALC(nrecs) >
                                        XFS_DFORK_SIZE(dip, mp, whichfork) ||
-                    ifp->if_nextents > ip->i_d.di_nblocks) ||
+                    ifp->if_nextents > ip->i_nblocks) ||
                     level == 0 || level > XFS_BM_MAXLEVELS(mp, whichfork)) {
                xfs_warn(mp, "corrupt inode %Lu (btree).",
                                        (unsigned long long) ip->i_ino);
index eb99d6f1c5005d1689b2ec097077d00da92bbe2b..ce1a32df01210ea3519db4bfcbaa5c4c127476cd 100644 (file)
@@ -154,7 +154,7 @@ xfs_bmap_rtalloc(
                ap->blkno *= mp->m_sb.sb_rextsize;
                ralen *= mp->m_sb.sb_rextsize;
                ap->length = ralen;
-               ap->ip->i_d.di_nblocks += ralen;
+               ap->ip->i_nblocks += ralen;
                xfs_trans_log_inode(ap->tp, ap->ip, XFS_ILOG_CORE);
                if (ap->wasdel)
                        ap->ip->i_delayed_blks -= ralen;
@@ -1476,9 +1476,9 @@ xfs_swap_extent_forks(
        /*
         * Fix the on-disk inode values
         */
-       tmp = (uint64_t)ip->i_d.di_nblocks;
-       ip->i_d.di_nblocks = tip->i_d.di_nblocks - taforkblks + aforkblks;
-       tip->i_d.di_nblocks = tmp + taforkblks - aforkblks;
+       tmp = (uint64_t)ip->i_nblocks;
+       ip->i_nblocks = tip->i_nblocks - taforkblks + aforkblks;
+       tip->i_nblocks = tmp + taforkblks - aforkblks;
 
        /*
         * The extents in the source inode could still contain speculative
index 47dfc70d4ed1a65570b317d1f4a5eeef6a847e50..354ae973000305ed62d5c21b57cd52563eebe95f 100644 (file)
@@ -64,7 +64,7 @@ xfs_inode_alloc(
        ip->i_flags = 0;
        ip->i_delayed_blks = 0;
        ip->i_d.di_flags2 = mp->m_ino_geo.new_diflags2;
-       ip->i_d.di_nblocks = 0;
+       ip->i_nblocks = 0;
        ip->i_d.di_forkoff = 0;
        ip->i_sick = 0;
        ip->i_checked = 0;
@@ -309,7 +309,7 @@ xfs_iget_check_free_state(
                        return -EFSCORRUPTED;
                }
 
-               if (ip->i_d.di_nblocks != 0) {
+               if (ip->i_nblocks != 0) {
                        xfs_warn(ip->i_mount,
 "Corruption detected! Free inode 0x%llx has blocks allocated!",
                                ip->i_ino);
index 1ee532aaf69eadf05210ff47cef4c518503d123b..30abf797592443fb90d500c10adc5d5a795aae7e 100644 (file)
@@ -832,7 +832,7 @@ xfs_init_new_inode(
 
        ip->i_disk_size = 0;
        ip->i_df.if_nextents = 0;
-       ASSERT(ip->i_d.di_nblocks == 0);
+       ASSERT(ip->i_nblocks == 0);
 
        tv = current_time(inode);
        inode->i_mtime = tv;
@@ -2586,7 +2586,7 @@ xfs_ifree(
        ASSERT(VFS_I(ip)->i_nlink == 0);
        ASSERT(ip->i_df.if_nextents == 0);
        ASSERT(ip->i_disk_size == 0 || !S_ISREG(VFS_I(ip)->i_mode));
-       ASSERT(ip->i_d.di_nblocks == 0);
+       ASSERT(ip->i_nblocks == 0);
 
        /*
         * Pull the on-disk inode from the AGI unlinked list.
@@ -3436,13 +3436,13 @@ xfs_iflush(
                }
        }
        if (XFS_TEST_ERROR(ip->i_df.if_nextents + xfs_ifork_nextents(ip->i_afp) >
-                               ip->i_d.di_nblocks, mp, XFS_ERRTAG_IFLUSH_5)) {
+                               ip->i_nblocks, mp, XFS_ERRTAG_IFLUSH_5)) {
                xfs_alert_tag(mp, XFS_PTAG_IFLUSH,
                        "%s: detected corrupt incore inode %Lu, "
                        "total extents = %d, nblocks = %Ld, ptr "PTR_FMT,
                        __func__, ip->i_ino,
                        ip->i_df.if_nextents + xfs_ifork_nextents(ip->i_afp),
-                       ip->i_d.di_nblocks, ip);
+                       ip->i_nblocks, ip);
                goto flush_out;
        }
        if (XFS_TEST_ERROR(ip->i_d.di_forkoff > mp->m_sb.sb_inodesize,
index 592ac6d18b92d6cc2fc4a74c13ed70ed0a268c26..687bb41f7da4f2d3fcf16117633137cc15da77a1 100644 (file)
@@ -55,6 +55,7 @@ typedef struct xfs_inode {
        unsigned long           i_flags;        /* see defined flags below */
        uint64_t                i_delayed_blks; /* count of delay alloc blks */
        xfs_fsize_t             i_disk_size;    /* number of bytes in file */
+       xfs_rfsblock_t          i_nblocks;      /* # of direct & btree blocks */
        prid_t                  i_projid;       /* owner's project id */
 
        struct xfs_icdinode     i_d;            /* most of ondisk inode */
index b16588283b7a0d423dd887a837b7652f26f24016..1d01cabc2db167e9109a72bbf5d7667223915621 100644 (file)
@@ -370,7 +370,7 @@ xfs_inode_to_log_dinode(
        to->di_mode = inode->i_mode;
 
        to->di_size = ip->i_disk_size;
-       to->di_nblocks = from->di_nblocks;
+       to->di_nblocks = ip->i_nblocks;
        to->di_extsize = from->di_extsize;
        to->di_nextents = xfs_ifork_nextents(&ip->i_df);
        to->di_anextents = xfs_ifork_nextents(ip->i_afp);
index 5028c2c425b5bc079f1b719fedd1482a44c7144c..5f093b7261b4085b60e6bd731f3c91a4917400d5 100644 (file)
@@ -594,8 +594,7 @@ xfs_vn_getattr(
        stat->atime = inode->i_atime;
        stat->mtime = inode->i_mtime;
        stat->ctime = inode->i_ctime;
-       stat->blocks =
-               XFS_FSB_TO_BB(mp, ip->i_d.di_nblocks + ip->i_delayed_blks);
+       stat->blocks = XFS_FSB_TO_BB(mp, ip->i_nblocks + ip->i_delayed_blks);
 
        if (xfs_sb_version_has_v3inode(&mp->m_sb)) {
                if (request_mask & STATX_BTIME) {
index 38d7faa1c65d2d69e512a3c14df593fa83b838f2..b9dc8523633878412939532ce15427dd4ea23e06 100644 (file)
@@ -132,7 +132,7 @@ xfs_bulkstat_one_int(
        case XFS_DINODE_FMT_BTREE:
                buf->bs_rdev = 0;
                buf->bs_blksize = mp->m_sb.sb_blocksize;
-               buf->bs_blocks = dic->di_nblocks + ip->i_delayed_blks;
+               buf->bs_blocks = ip->i_nblocks + ip->i_delayed_blks;
                break;
        }
        xfs_iunlock(ip, XFS_ILOCK_SHARED);
index 0a22b947897bc7520081c9ba9a8032eaac0aacec..134d5a11eb22055c5c844624dcf846d30ad8560f 100644 (file)
@@ -992,7 +992,7 @@ xfs_qm_reset_dqcounts_buf(
         * trans_reserve. But, this gets called during quotacheck, and that
         * happens only at mount time which is single threaded.
         */
-       if (qip->i_d.di_nblocks == 0)
+       if (qip->i_nblocks == 0)
                return 0;
 
        map = kmem_alloc(XFS_DQITER_MAP_SIZE * sizeof(*map), 0);
@@ -1174,7 +1174,7 @@ xfs_qm_dqusage_adjust(
                xfs_bmap_count_leaves(ifp, &rtblks);
        }
 
-       nblks = (xfs_qcnt_t)ip->i_d.di_nblocks - rtblks;
+       nblks = (xfs_qcnt_t)ip->i_nblocks - rtblks;
 
        /*
         * Add the (disk blocks and inode) resources occupied by this
@@ -1779,11 +1779,11 @@ xfs_qm_vop_chown(
        ASSERT(prevdq);
        ASSERT(prevdq != newdq);
 
-       xfs_trans_mod_dquot(tp, prevdq, bfield, -(ip->i_d.di_nblocks));
+       xfs_trans_mod_dquot(tp, prevdq, bfield, -(ip->i_nblocks));
        xfs_trans_mod_dquot(tp, prevdq, XFS_TRANS_DQ_ICOUNT, -1);
 
        /* the sparkling new dquot */
-       xfs_trans_mod_dquot(tp, newdq, bfield, ip->i_d.di_nblocks);
+       xfs_trans_mod_dquot(tp, newdq, bfield, ip->i_nblocks);
        xfs_trans_mod_dquot(tp, newdq, XFS_TRANS_DQ_ICOUNT, 1);
 
        /*
index d27c0e852c0b0fb2428d7b3a6f9265923352e4f3..88d70c236a5445827be5382c4b8d566d2faf5566 100644 (file)
@@ -35,7 +35,7 @@ xfs_qm_fill_state(
                tempqip = true;
        }
        tstate->flags |= QCI_SYSFILE;
-       tstate->blocks = ip->i_d.di_nblocks;
+       tstate->blocks = ip->i_nblocks;
        tstate->nextents = ip->i_df.if_nextents;
        tstate->spc_timelimit = (u32)defq->blk.time;
        tstate->ino_timelimit = (u32)defq->ino.time;
index bc25afc102452810870f4fb38efc8a67e11426f1..bcc9780118693ff969888767a6e8c69e0244b0d3 100644 (file)
@@ -1189,7 +1189,7 @@ retry:
                 * though that part is only semi-transactional.
                 */
                error = xfs_trans_reserve_quota_bydquots(tp, mp, udqp, gdqp,
-                               pdqp, ip->i_d.di_nblocks + ip->i_delayed_blks,
+                               pdqp, ip->i_nblocks + ip->i_delayed_blks,
                                1, qflags);
                if ((error == -EDQUOT || error == -ENOSPC) && !retried) {
                        xfs_trans_cancel(tp);