break;
}
if (ic) {
- quota_add(&xino.i_d.di_projid, &xino.i_d.di_gid,
- &xino.i_d.di_uid, 0, bc, ic, rc);
+ quota_add(&xino.i_d.di_projid, &VFS_I(&xino)->i_gid,
+ &VFS_I(&xino)->i_uid, 0, bc, ic, rc);
}
}
totblocks = totdblocks + totiblocks + atotdblocks + atotiblocks;
#define xfs_uid_to_kuid(uid) (uid)
#define xfs_gid_to_kgid(gid) (gid)
+#define xfs_kuid_to_uid(kuid) (kuid)
+#define xfs_kgid_to_gid(kgid) (kgid)
/*
* Prototypes for kernel static functions that are aren't in their
VFS_I(ip)->i_mode = mode;
set_nlink(VFS_I(ip), nlink);
- ip->i_d.di_uid = cr->cr_uid;
- ip->i_d.di_gid = cr->cr_gid;
+ i_uid_write(VFS_I(ip), cr->cr_uid);
+ i_gid_write(VFS_I(ip), cr->cr_gid);
ip->i_d.di_projid = pip ? 0 : fsx->fsx_projid;
xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG | XFS_ICHGTIME_MOD);
}
if (pip && (VFS_I(pip)->i_mode & S_ISGID)) {
- ip->i_d.di_gid = pip->i_d.di_gid;
+ VFS_I(ip)->i_gid = VFS_I(pip)->i_gid;
if ((VFS_I(pip)->i_mode & S_ISGID) && (mode & S_IFMT) == S_IFDIR)
VFS_I(ip)->i_mode |= S_ISGID;
}
}
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 */