Whamcloud - gitweb
LU-8922 lod: check master stripes properly
[fs/lustre-release.git] / lustre / quota / lquota_internal.h
index 1e9d5d0..5361b7d 100644 (file)
 #ifndef _LQUOTA_INTERNAL_H
 #define _LQUOTA_INTERNAL_H
 
-#define QTYPE_NAME(qtype) ((qtype) == USRQUOTA ? "usr" : "grp")
+/*
+static inline char *qtype_name(int qtype)
+{
+       switch (qtype) {
+       case USRQUOTA:
+               return "usr";
+       case GRPQUOTA:
+               return "grp";
+       case PRJQUOTA:
+               return "prj";
+               break;
+       }
+       return "unknown";
+}
+*/
+
 #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;
+       }
+
+       LASSERTF(0, "invalid quota type: %d", qtype);
+       return LQUOTA_USR_OID;
+}
+
 /*
  * lquota_entry support
  */
@@ -81,7 +112,7 @@ struct lquota_mst_entry {
        __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 */
@@ -122,16 +153,16 @@ struct lquota_slv_entry {
        __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
@@ -279,8 +310,20 @@ static inline void lqe_read_unlock(struct lquota_entry *lqe)
 #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;
+       }
+
+       LASSERTF(0, "invalid quota type: %d", qtype);
+       return QUOTA_FL_OVER_USRQUOTA;
+}
 
 /* Common data shared by quota-level handlers. This is allocated per-thread to
  * reduce stack consumption */