}
 
        to->di_format = from->di_format;
-       to->di_uid = be32_to_cpu(from->di_uid);
-       inode->i_uid = xfs_uid_to_kuid(to->di_uid);
-       to->di_gid = be32_to_cpu(from->di_gid);
-       inode->i_gid = xfs_gid_to_kgid(to->di_gid);
+       inode->i_uid = xfs_uid_to_kuid(be32_to_cpu(from->di_uid));
+       inode->i_gid = xfs_gid_to_kgid(be32_to_cpu(from->di_gid));
        to->di_flushiter = be16_to_cpu(from->di_flushiter);
 
        /*
 
        to->di_version = from->di_version;
        to->di_format = from->di_format;
-       to->di_uid = cpu_to_be32(from->di_uid);
-       to->di_gid = cpu_to_be32(from->di_gid);
+       to->di_uid = cpu_to_be32(xfs_kuid_to_uid(inode->i_uid));
+       to->di_gid = cpu_to_be32(xfs_kgid_to_gid(inode->i_gid));
        to->di_projid_lo = cpu_to_be16(from->di_projid & 0xffff);
        to->di_projid_hi = cpu_to_be16(from->di_projid >> 16);
 
 
        int8_t          di_version;     /* inode version */
        int8_t          di_format;      /* format of di_c data */
        uint16_t        di_flushiter;   /* incremented on flush */
-       uint32_t        di_uid;         /* owner's user id */
-       uint32_t        di_gid;         /* owner's group id */
        uint32_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 */
 
 {
        switch (type) {
        case XFS_DQ_USER:
-               return ip->i_d.di_uid;
+               return xfs_kuid_to_uid(VFS_I(ip)->i_uid);
        case XFS_DQ_GROUP:
-               return ip->i_d.di_gid;
+               return xfs_kgid_to_gid(VFS_I(ip)->i_gid);
        case XFS_DQ_PROJ:
                return ip->i_d.di_projid;
        }
 
        inode->i_mode = mode;
        set_nlink(inode, nlink);
        inode->i_uid = current_fsuid();
-       ip->i_d.di_uid = xfs_kuid_to_uid(inode->i_uid);
        inode->i_rdev = rdev;
        ip->i_d.di_projid = prid;
 
        if (pip && XFS_INHERIT_GID(pip)) {
                inode->i_gid = VFS_I(pip)->i_gid;
-               ip->i_d.di_gid = pip->i_d.di_gid;
                if ((VFS_I(pip)->i_mode & S_ISGID) && S_ISDIR(mode))
                        inode->i_mode |= S_ISGID;
        } else {
                inode->i_gid = current_fsgid();
-               ip->i_d.di_gid = xfs_kgid_to_gid(inode->i_gid);
        }
 
        /*
         * ID or one of the supplementary group IDs, the S_ISGID bit is cleared
         * (and only if the irix_sgid_inherit compatibility variable is set).
         */
-       if ((irix_sgid_inherit) &&
-           (inode->i_mode & S_ISGID) &&
-           (!in_group_p(xfs_gid_to_kgid(ip->i_d.di_gid))))
+       if (irix_sgid_inherit &&
+           (inode->i_mode & S_ISGID) && !in_group_p(inode->i_gid))
                inode->i_mode &= ~S_ISGID;
 
        ip->i_d.di_size = 0;
        /*
         * Make sure that we have allocated dquot(s) on disk.
         */
-       error = xfs_qm_vop_dqalloc(dp, xfs_kuid_to_uid(current_fsuid()),
-                                       xfs_kgid_to_gid(current_fsgid()), prid,
+       error = xfs_qm_vop_dqalloc(dp, current_fsuid(), current_fsgid(), prid,
                                        XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
                                        &udqp, &gdqp, &pdqp);
        if (error)
        /*
         * Make sure that we have allocated dquot(s) on disk.
         */
-       error = xfs_qm_vop_dqalloc(dp, xfs_kuid_to_uid(current_fsuid()),
-                               xfs_kgid_to_gid(current_fsgid()), prid,
+       error = xfs_qm_vop_dqalloc(dp, current_fsuid(), current_fsgid(), prid,
                                XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
                                &udqp, &gdqp, &pdqp);
        if (error)
 
 
        to->di_version = from->di_version;
        to->di_format = from->di_format;
-       to->di_uid = from->di_uid;
-       to->di_gid = from->di_gid;
+       to->di_uid = xfs_kuid_to_uid(inode->i_uid);
+       to->di_gid = xfs_kgid_to_gid(inode->i_gid);
        to->di_projid_lo = from->di_projid & 0xffff;
        to->di_projid_hi = from->di_projid >> 16;
 
 
         * because the i_*dquot fields will get updated anyway.
         */
        if (XFS_IS_QUOTA_ON(mp)) {
-               code = xfs_qm_vop_dqalloc(ip, ip->i_d.di_uid,
-                                        ip->i_d.di_gid, fa->fsx_projid,
-                                        XFS_QMOPT_PQUOTA, &udqp, NULL, &pdqp);
+               code = xfs_qm_vop_dqalloc(ip, VFS_I(ip)->i_uid,
+                               VFS_I(ip)->i_gid, fa->fsx_projid,
+                               XFS_QMOPT_PQUOTA, &udqp, NULL, &pdqp);
                if (code)
                        return code;
        }
 
                 */
                ASSERT(udqp == NULL);
                ASSERT(gdqp == NULL);
-               error = xfs_qm_vop_dqalloc(ip, xfs_kuid_to_uid(uid),
-                                          xfs_kgid_to_gid(gid),
-                                          ip->i_d.di_projid,
+               error = xfs_qm_vop_dqalloc(ip, uid, gid, ip->i_d.di_projid,
                                           qflags, &udqp, &gdqp, NULL);
                if (error)
                        return error;
                                olddquot1 = xfs_qm_vop_chown(tp, ip,
                                                        &ip->i_udquot, udqp);
                        }
-                       ip->i_d.di_uid = xfs_kuid_to_uid(uid);
                        inode->i_uid = uid;
                }
                if (!gid_eq(igid, gid)) {
                                olddquot2 = xfs_qm_vop_chown(tp, ip,
                                                        &ip->i_gdquot, gdqp);
                        }
-                       ip->i_d.di_gid = xfs_kgid_to_gid(gid);
                        inode->i_gid = gid;
                }
        }
 
         */
        buf->bs_projectid = ip->i_d.di_projid;
        buf->bs_ino = ino;
-       buf->bs_uid = dic->di_uid;
-       buf->bs_gid = dic->di_gid;
+       buf->bs_uid = xfs_kuid_to_uid(inode->i_uid);
+       buf->bs_gid = xfs_kgid_to_gid(inode->i_gid);
        buf->bs_size = dic->di_size;
 
        buf->bs_nlink = inode->i_nlink;
 
        ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
 
        if (XFS_IS_UQUOTA_ON(mp) && !ip->i_udquot) {
-               error = xfs_qm_dqattach_one(ip, ip->i_d.di_uid, XFS_DQ_USER,
-                               doalloc, &ip->i_udquot);
+               error = xfs_qm_dqattach_one(ip,
+                               xfs_kuid_to_uid(VFS_I(ip)->i_uid),
+                               XFS_DQ_USER, doalloc, &ip->i_udquot);
                if (error)
                        goto done;
                ASSERT(ip->i_udquot);
        }
 
        if (XFS_IS_GQUOTA_ON(mp) && !ip->i_gdquot) {
-               error = xfs_qm_dqattach_one(ip, ip->i_d.di_gid, XFS_DQ_GROUP,
-                               doalloc, &ip->i_gdquot);
+               error = xfs_qm_dqattach_one(ip,
+                               xfs_kgid_to_gid(VFS_I(ip)->i_gid),
+                               XFS_DQ_GROUP, doalloc, &ip->i_gdquot);
                if (error)
                        goto done;
                ASSERT(ip->i_gdquot);
 int
 xfs_qm_vop_dqalloc(
        struct xfs_inode        *ip,
-       xfs_dqid_t              uid,
-       xfs_dqid_t              gid,
+       kuid_t                  uid,
+       kgid_t                  gid,
        prid_t                  prid,
        uint                    flags,
        struct xfs_dquot        **O_udqpp,
        struct xfs_dquot        **O_pdqpp)
 {
        struct xfs_mount        *mp = ip->i_mount;
+       struct inode            *inode = VFS_I(ip);
        struct xfs_dquot        *uq = NULL;
        struct xfs_dquot        *gq = NULL;
        struct xfs_dquot        *pq = NULL;
        xfs_ilock(ip, lockflags);
 
        if ((flags & XFS_QMOPT_INHERIT) && XFS_INHERIT_GID(ip))
-               gid = ip->i_d.di_gid;
+               gid = inode->i_gid;
 
        /*
         * Attach the dquot(s) to this inode, doing a dquot allocation
        }
 
        if ((flags & XFS_QMOPT_UQUOTA) && XFS_IS_UQUOTA_ON(mp)) {
-               if (ip->i_d.di_uid != uid) {
+               if (!uid_eq(inode->i_uid, uid)) {
                        /*
                         * What we need is the dquot that has this uid, and
                         * if we send the inode to dqget, the uid of the inode
                         * holding ilock.
                         */
                        xfs_iunlock(ip, lockflags);
-                       error = xfs_qm_dqget(mp, uid, XFS_DQ_USER, true, &uq);
+                       error = xfs_qm_dqget(mp, xfs_kuid_to_uid(uid),
+                                       XFS_DQ_USER, true, &uq);
                        if (error) {
                                ASSERT(error != -ENOENT);
                                return error;
                }
        }
        if ((flags & XFS_QMOPT_GQUOTA) && XFS_IS_GQUOTA_ON(mp)) {
-               if (ip->i_d.di_gid != gid) {
+               if (!gid_eq(inode->i_gid, gid)) {
                        xfs_iunlock(ip, lockflags);
-                       error = xfs_qm_dqget(mp, gid, XFS_DQ_GROUP, true, &gq);
+                       error = xfs_qm_dqget(mp, xfs_kgid_to_gid(gid),
+                                       XFS_DQ_GROUP, true, &gq);
                        if (error) {
                                ASSERT(error != -ENOENT);
                                goto error_rele;
                        XFS_QMOPT_RES_RTBLKS : XFS_QMOPT_RES_REGBLKS;
 
        if (XFS_IS_UQUOTA_ON(mp) && udqp &&
-           ip->i_d.di_uid != be32_to_cpu(udqp->q_core.d_id)) {
+           xfs_kuid_to_uid(VFS_I(ip)->i_uid) !=
+                       be32_to_cpu(udqp->q_core.d_id)) {
                udq_delblks = udqp;
                /*
                 * If there are delayed allocation blocks, then we have to
                }
        }
        if (XFS_IS_GQUOTA_ON(ip->i_mount) && gdqp &&
-           ip->i_d.di_gid != be32_to_cpu(gdqp->q_core.d_id)) {
+           xfs_kgid_to_gid(VFS_I(ip)->i_gid) !=
+                       be32_to_cpu(gdqp->q_core.d_id)) {
                gdq_delblks = gdqp;
                if (delblks) {
                        ASSERT(ip->i_gdquot);
 
        if (udqp && XFS_IS_UQUOTA_ON(mp)) {
                ASSERT(ip->i_udquot == NULL);
-               ASSERT(ip->i_d.di_uid == be32_to_cpu(udqp->q_core.d_id));
+               ASSERT(xfs_kuid_to_uid(VFS_I(ip)->i_uid) ==
+                       be32_to_cpu(udqp->q_core.d_id));
 
                ip->i_udquot = xfs_qm_dqhold(udqp);
                xfs_trans_mod_dquot(tp, udqp, XFS_TRANS_DQ_ICOUNT, 1);
        }
        if (gdqp && XFS_IS_GQUOTA_ON(mp)) {
                ASSERT(ip->i_gdquot == NULL);
-               ASSERT(ip->i_d.di_gid == be32_to_cpu(gdqp->q_core.d_id));
+               ASSERT(xfs_kgid_to_gid(VFS_I(ip)->i_gid) ==
+                       be32_to_cpu(gdqp->q_core.d_id));
+
                ip->i_gdquot = xfs_qm_dqhold(gdqp);
                xfs_trans_mod_dquot(tp, gdqp, XFS_TRANS_DQ_ICOUNT, 1);
        }
 
                struct xfs_mount *, struct xfs_dquot *,
                struct xfs_dquot *, struct xfs_dquot *, int64_t, long, uint);
 
-extern int xfs_qm_vop_dqalloc(struct xfs_inode *, xfs_dqid_t, xfs_dqid_t,
+extern int xfs_qm_vop_dqalloc(struct xfs_inode *, kuid_t, kgid_t,
                prid_t, uint, struct xfs_dquot **, struct xfs_dquot **,
                struct xfs_dquot **);
 extern void xfs_qm_vop_create_dqattach(struct xfs_trans *, struct xfs_inode *,
 
 #else
 static inline int
-xfs_qm_vop_dqalloc(struct xfs_inode *ip, xfs_dqid_t uid, xfs_dqid_t gid,
+xfs_qm_vop_dqalloc(struct xfs_inode *ip, kuid_t kuid, kgid_t kgid,
                prid_t prid, uint flags, struct xfs_dquot **udqp,
                struct xfs_dquot **gdqp, struct xfs_dquot **pdqp)
 {
 
        /*
         * Make sure that we have allocated dquot(s) on disk.
         */
-       error = xfs_qm_vop_dqalloc(dp,
-                       xfs_kuid_to_uid(current_fsuid()),
-                       xfs_kgid_to_gid(current_fsgid()), prid,
+       error = xfs_qm_vop_dqalloc(dp, current_fsuid(), current_fsgid(), prid,
                        XFS_QMOPT_QUOTALL | XFS_QMOPT_INHERIT,
                        &udqp, &gdqp, &pdqp);
        if (error)