* GPL HEADER END
*/
/*
- * Copyright (c) 2012, 2014, Intel Corporation.
+ * Copyright (c) 2012, 2017, Intel Corporation.
* Use is subject to license terms.
*/
#ifndef _LQUOTA_INTERNAL_H
#define _LQUOTA_INTERNAL_H
-#define QTYPE_NAME(qtype) ((qtype) == USRQUOTA ? "usr" : "grp")
#define RES_NAME(res) ((res) == LQUOTA_RES_MD ? "md" : "dt")
#define QIF_IFLAGS (QIF_INODES | QIF_ITIME | QIF_ILIMITS)
enum lquota_local_oid {
LQUOTA_USR_OID = 1UL, /* slave index copy for user quota */
LQUOTA_GRP_OID = 2UL, /* slave index copy for group quota */
+ LQUOTA_PRJ_OID = 3UL, /* slave index copy for project quota */
/* all OIDs after this are allocated dynamically by the QMT */
LQUOTA_GENERATED_OID = 4096UL,
};
+static inline __u32 qtype2slv_oid(int qtype)
+{
+ switch (qtype) {
+ case USRQUOTA:
+ return LQUOTA_USR_OID;
+ case GRPQUOTA:
+ return LQUOTA_GRP_OID;
+ case PRJQUOTA:
+ return LQUOTA_PRJ_OID;
+ }
+
+ /* should not come here, just make compile happy */
+ return LQUOTA_USR_OID;
+}
+
/*
* lquota_entry support
*/
__u64 lme_gracetime;
/* last time we glimpsed */
- __u64 lme_revoke_time;
+ time64_t lme_revoke_time;
/* r/w semaphore used to protect concurrent access to the quota
* parameters which are stored on disk */
__u64 lse_usage;
/* time to trigger quota adjust */
- __u64 lse_adjust_time;
+ time64_t lse_adjust_time;
/* return code of latest acquire RPC */
int lse_acq_rc;
/* when latest acquire RPC completed */
- __u64 lse_acq_time;
+ time64_t lse_acq_time;
/* when latest edquot set */
- __u64 lse_edquot_time;
+ time64_t lse_edquot_time;
};
/* In-memory entry for each enforced quota id
} u;
/* flags describing the state of the lquota_entry */
- unsigned long lqe_enforced:1,/* quota enforced or not */
- lqe_uptodate:1,/* successfully read from disk */
- lqe_edquot:1, /* id out of quota space on QMT */
- lqe_gl:1, /* glimpse is in progress */
- lqe_nopreacq:1;/* pre-acquire disabled */
+ unsigned long lqe_enforced:1, /* quota enforced or not */
+ lqe_uptodate:1, /* successfully read from disk */
+ lqe_edquot:1, /* id out of quota space on QMT */
+ lqe_gl:1, /* glimpse is in progress */
+ lqe_nopreacq:1, /* pre-acquire disabled */
+ lqe_is_default:1; /* the default quota is used */
};
/* Compartment within which lquota_entry are unique.
#define LQUOTA_LEAST_QUNIT(type) \
(type == LQUOTA_RES_MD ? (1 << 10) : toqb(OFD_MAX_BRW_SIZE))
-#define LQUOTA_OVER_FL(type) \
- (type == USRQUOTA ? QUOTA_FL_OVER_USRQUOTA : QUOTA_FL_OVER_GRPQUOTA)
+static inline int lquota_over_fl(int qtype)
+{
+ switch (qtype) {
+ case USRQUOTA:
+ return QUOTA_FL_OVER_USRQUOTA;
+ case GRPQUOTA:
+ return QUOTA_FL_OVER_GRPQUOTA;
+ case PRJQUOTA:
+ return QUOTA_FL_OVER_PRJQUOTA;
+ }
+
+ /* should not come here, just make compile happy */
+ return QUOTA_FL_OVER_USRQUOTA;
+}
/* Common data shared by quota-level handlers. This is allocated per-thread to
* reduce stack consumption */