return USRQUOTA;
case ACCT_GROUP_OID:
return GRPQUOTA;
+ case ACCT_PROJECT_OID:
+ return PRJQUOTA;
}
LASSERTF(0, "invalid fid for quota type: %u", fid_oid(fid));
const struct lu_fid *fid, struct osd_inode_id *id)
{
struct super_block *sb = osd_sb(osd);
- unsigned long qf_inums[LL_MAXQUOTAS] = {
- le32_to_cpu(LDISKFS_SB(sb)->s_es->s_usr_quota_inum),
- le32_to_cpu(LDISKFS_SB(sb)->s_es->s_grp_quota_inum)
- };
ENTRY;
LASSERT(fid_is_acct(fid));
RETURN(-ENOENT);
id->oii_gen = OSD_OII_NOGEN;
- id->oii_ino = qf_inums[fid2type(fid)];
+ switch (fid2type(fid)) {
+ case USRQUOTA:
+ id->oii_ino =
+ le32_to_cpu(LDISKFS_SB(sb)->s_es->s_usr_quota_inum);
+ break;
+ case GRPQUOTA:
+ id->oii_ino =
+ le32_to_cpu(LDISKFS_SB(sb)->s_es->s_grp_quota_inum);
+ break;
+ case PRJQUOTA:
+#ifdef HAVE_PROJECT_QUOTA
+ if (!LDISKFS_HAS_RO_COMPAT_FEATURE(sb,
+ LDISKFS_FEATURE_RO_COMPAT_PROJECT))
+ RETURN(-ENOTSUPP);
+ id->oii_ino =
+ le32_to_cpu(LDISKFS_SB(sb)->s_es->s_prj_quota_inum);
+ break;
+#else
+ RETURN(-ENOTSUPP);
+#endif
+ }
if (!ldiskfs_valid_inum(sb, id->oii_ino))
RETURN(-ENOENT);
RETURN(0);