xfs: move the di_projid field to struct xfs_inode
authorChristoph Hellwig <hch@lst.de>
Mon, 29 Mar 2021 18:11:39 +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 projid
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>
13 files changed:
fs/xfs/libxfs/xfs_inode_buf.c
fs/xfs/libxfs/xfs_inode_buf.h
fs/xfs/xfs_bmap_util.c
fs/xfs/xfs_dquot.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_ioctl.c
fs/xfs/xfs_iops.c
fs/xfs/xfs_itable.c
fs/xfs/xfs_qm.c
fs/xfs/xfs_qm_bhv.c

index 917a41828ffbe30fe15d5359deab8ad30c2880ee..671aeb012e3f59e681ce41a0d589390ee7c748bd 100644 (file)
@@ -206,10 +206,10 @@ xfs_inode_from_disk(
         */
        if (unlikely(from->di_version == 1)) {
                set_nlink(inode, be16_to_cpu(from->di_onlink));
-               to->di_projid = 0;
+               ip->i_projid = 0;
        } else {
                set_nlink(inode, be32_to_cpu(from->di_nlink));
-               to->di_projid = (prid_t)be16_to_cpu(from->di_projid_hi) << 16 |
+               ip->i_projid = (prid_t)be16_to_cpu(from->di_projid_hi) << 16 |
                                        be16_to_cpu(from->di_projid_lo);
        }
 
@@ -294,8 +294,8 @@ xfs_inode_to_disk(
        to->di_format = xfs_ifork_format(&ip->i_df);
        to->di_uid = cpu_to_be32(i_uid_read(inode));
        to->di_gid = cpu_to_be32(i_gid_read(inode));
-       to->di_projid_lo = cpu_to_be16(from->di_projid & 0xffff);
-       to->di_projid_hi = cpu_to_be16(from->di_projid >> 16);
+       to->di_projid_lo = cpu_to_be16(ip->i_projid & 0xffff);
+       to->di_projid_hi = cpu_to_be16(ip->i_projid >> 16);
 
        memset(to->di_pad, 0, sizeof(to->di_pad));
        to->di_atime = xfs_inode_to_disk_ts(ip, inode->i_atime);
index d7a019df05d647bb5d1e923926acff87c3220acb..406f667992883f7978df8c93af82141d2407015b 100644 (file)
@@ -17,7 +17,6 @@ struct xfs_dinode;
  */
 struct xfs_icdinode {
        uint16_t        di_flushiter;   /* incremented on flush */
-       prid_t          di_projid;      /* owner's project id */
        xfs_fsize_t     di_size;        /* number of bytes in file */
        xfs_rfsblock_t  di_nblocks;     /* # of direct & btree blocks used */
        xfs_extlen_t    di_extsize;     /* basic/minimum extent size for file */
index e7d68318e6a55c6c1bdfaf47db088da061996889..0a63728cc8f25c7786bae5f1be3c0e6ff4cc5926 100644 (file)
@@ -1208,7 +1208,7 @@ xfs_swap_extents_check_format(
        if (XFS_IS_QUOTA_ON(ip->i_mount) &&
            (!uid_eq(VFS_I(ip)->i_uid, VFS_I(tip)->i_uid) ||
             !gid_eq(VFS_I(ip)->i_gid, VFS_I(tip)->i_gid) ||
-            ip->i_d.di_projid != tip->i_d.di_projid))
+            ip->i_projid != tip->i_projid))
                return -EINVAL;
 
        /* Should never get a local format */
index bd8379b98374f80c31a2a7d749cc31d0c3f12242..7fb63a04400fabc1fc6cc5a8634a67b3c342da76 100644 (file)
@@ -953,7 +953,7 @@ xfs_qm_id_for_quotatype(
        case XFS_DQTYPE_GROUP:
                return i_gid_read(VFS_I(ip));
        case XFS_DQTYPE_PROJ:
-               return ip->i_d.di_projid;
+               return ip->i_projid;
        }
        ASSERT(0);
        return 0;
index fae6392f7c5650179a20768d7d8e5e2c4725ec7d..47dfc70d4ed1a65570b317d1f4a5eeef6a847e50 100644 (file)
@@ -1204,7 +1204,7 @@ xfs_inode_match_id(
                return false;
 
        if ((eofb->eof_flags & XFS_EOF_FLAGS_PRID) &&
-           ip->i_d.di_projid != eofb->eof_prid)
+           ip->i_projid != eofb->eof_prid)
                return false;
 
        return true;
@@ -1228,7 +1228,7 @@ xfs_inode_match_id_union(
                return true;
 
        if ((eofb->eof_flags & XFS_EOF_FLAGS_PRID) &&
-           ip->i_d.di_projid == eofb->eof_prid)
+           ip->i_projid == eofb->eof_prid)
                return true;
 
        return false;
index 9c8fd11a53622af7115536fd14474c658f3a2a9a..7f2762a6c4c68e372117b87443a960ea0fd078e9 100644 (file)
@@ -809,7 +809,7 @@ xfs_init_new_inode(
        inode = VFS_I(ip);
        set_nlink(inode, nlink);
        inode->i_rdev = rdev;
-       ip->i_d.di_projid = prid;
+       ip->i_projid = prid;
 
        if (dir && !(dir->i_mode & S_ISGID) &&
            (mp->m_flags & XFS_MOUNT_GRPID)) {
@@ -1288,7 +1288,7 @@ xfs_link(
         * the tree quota mechanism could be circumvented.
         */
        if (unlikely((tdp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) &&
-                    tdp->i_d.di_projid != sip->i_d.di_projid)) {
+                    tdp->i_projid != sip->i_projid)) {
                error = -EXDEV;
                goto error_return;
        }
@@ -3126,7 +3126,7 @@ xfs_rename(
         * tree quota mechanism would be circumvented.
         */
        if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) &&
-                    target_dp->i_d.di_projid != src_ip->i_d.di_projid)) {
+                    target_dp->i_projid != src_ip->i_projid)) {
                error = -EXDEV;
                goto out_trans_cancel;
        }
index df514276747939a483640c8f1a47dc26b7a2b435..5eb1327b44093b82b218dc4e2000ad70d3844873 100644 (file)
@@ -54,6 +54,7 @@ typedef struct xfs_inode {
        /* Miscellaneous state. */
        unsigned long           i_flags;        /* see defined flags below */
        uint64_t                i_delayed_blks; /* count of delay alloc blks */
+       prid_t                  i_projid;       /* owner's project id */
 
        struct xfs_icdinode     i_d;            /* most of ondisk inode */
 
@@ -175,7 +176,7 @@ static inline prid_t
 xfs_get_initial_prid(struct xfs_inode *dp)
 {
        if (dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)
-               return dp->i_d.di_projid;
+               return dp->i_projid;
 
        return XFS_PROJID_DEFAULT;
 }
index 16e758a689217e1ef3a072b64335aec26695d8b9..ddc4b456864a3900c866870d97a4aa5efedb2a50 100644 (file)
@@ -357,8 +357,8 @@ xfs_inode_to_log_dinode(
        to->di_format = xfs_ifork_format(&ip->i_df);
        to->di_uid = i_uid_read(inode);
        to->di_gid = i_gid_read(inode);
-       to->di_projid_lo = from->di_projid & 0xffff;
-       to->di_projid_hi = from->di_projid >> 16;
+       to->di_projid_lo = ip->i_projid & 0xffff;
+       to->di_projid_hi = ip->i_projid >> 16;
 
        memset(to->di_pad, 0, sizeof(to->di_pad));
        memset(to->di_pad3, 0, sizeof(to->di_pad3));
index 99dfe89a8d08b82d966d9f833eb7761c62a1d3e6..8d22127284d3608596991f47095cd1b8293fb707 100644 (file)
@@ -1123,7 +1123,7 @@ xfs_fill_fsxattr(
        fa->fsx_extsize = ip->i_d.di_extsize << ip->i_mount->m_sb.sb_blocklog;
        fa->fsx_cowextsize = ip->i_d.di_cowextsize <<
                        ip->i_mount->m_sb.sb_blocklog;
-       fa->fsx_projid = ip->i_d.di_projid;
+       fa->fsx_projid = ip->i_projid;
        if (ifp && (ifp->if_flags & XFS_IFEXTENTS))
                fa->fsx_nextents = xfs_iext_count(ifp);
        else
@@ -1505,12 +1505,12 @@ xfs_ioctl_setattr(
                VFS_I(ip)->i_mode &= ~(S_ISUID|S_ISGID);
 
        /* Change the ownerships and register project quota modifications */
-       if (ip->i_d.di_projid != fa->fsx_projid) {
+       if (ip->i_projid != fa->fsx_projid) {
                if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_PQUOTA_ON(mp)) {
                        olddquot = xfs_qm_vop_chown(tp, ip,
                                                &ip->i_pdquot, pdqp);
                }
-               ip->i_d.di_projid = fa->fsx_projid;
+               ip->i_projid = fa->fsx_projid;
        }
 
        /*
index 5b8ac9b6cef8e77a1d8e4d4dd67112d6bb58a9b5..710d9ee42e35f9e040c2ae6a8014659f3c78fc29 100644 (file)
@@ -737,7 +737,7 @@ xfs_setattr_nonsize(
                 */
                ASSERT(udqp == NULL);
                ASSERT(gdqp == NULL);
-               error = xfs_qm_vop_dqalloc(ip, uid, gid, ip->i_d.di_projid,
+               error = xfs_qm_vop_dqalloc(ip, uid, gid, ip->i_projid,
                                           qflags, &udqp, &gdqp, NULL);
                if (error)
                        return error;
index 5593d50835c72e469bd556a1c77f1be6117bbcdf..81d34a525593ede3070ab490f484318342c9be8c 100644 (file)
@@ -86,7 +86,7 @@ xfs_bulkstat_one_int(
        /* xfs_iget returns the following without needing
         * further change.
         */
-       buf->bs_projectid = ip->i_d.di_projid;
+       buf->bs_projectid = ip->i_projid;
        buf->bs_ino = ino;
        buf->bs_uid = from_kuid(sb_userns, i_uid_into_mnt(mnt_userns, inode));
        buf->bs_gid = from_kgid(sb_userns, i_gid_into_mnt(mnt_userns, inode));
index 6fde318b9fed272323be4dd57e873dd2e3d6b4bc..0a22b947897bc7520081c9ba9a8032eaac0aacec 100644 (file)
@@ -1716,7 +1716,7 @@ xfs_qm_vop_dqalloc(
        }
        if ((flags & XFS_QMOPT_PQUOTA) && XFS_IS_PQUOTA_ON(mp)) {
                ASSERT(O_pdqpp);
-               if (ip->i_d.di_projid != prid) {
+               if (ip->i_projid != prid) {
                        xfs_iunlock(ip, lockflags);
                        error = xfs_qm_dqget(mp, prid,
                                        XFS_DQTYPE_PROJ, true, &pq);
@@ -1877,7 +1877,7 @@ xfs_qm_vop_create_dqattach(
        }
        if (pdqp && XFS_IS_PQUOTA_ON(mp)) {
                ASSERT(ip->i_pdquot == NULL);
-               ASSERT(ip->i_d.di_projid == pdqp->q_id);
+               ASSERT(ip->i_projid == pdqp->q_id);
 
                ip->i_pdquot = xfs_qm_dqhold(pdqp);
                xfs_trans_mod_dquot(tp, pdqp, XFS_TRANS_DQ_ICOUNT, 1);
index 639398091ad6bac4655d3472dd712071d40dd60d..df00dfbf5c9d19747a10729f8426db07e3f7ad98 100644 (file)
@@ -60,7 +60,7 @@ xfs_qm_statvfs(
        struct xfs_mount        *mp = ip->i_mount;
        struct xfs_dquot        *dqp;
 
-       if (!xfs_qm_dqget(mp, ip->i_d.di_projid, XFS_DQTYPE_PROJ, false, &dqp)) {
+       if (!xfs_qm_dqget(mp, ip->i_projid, XFS_DQTYPE_PROJ, false, &dqp)) {
                xfs_fill_statvfs_from_dquot(statp, dqp);
                xfs_qm_dqput(dqp);
        }