X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fquota%2Flquota_internal.h;h=f8f8340cdd6a4d3e6ec3a3978fa630b8d87db730;hb=416e67222b769df490a8be034ef987a596dd8dff;hp=31897dac98ad581626654a657f520c860567c8ef;hpb=d40b3f9663c7627f0f08c4e3b5efa6cd206ca0f0;p=fs%2Flustre-release.git diff --git a/lustre/quota/lquota_internal.h b/lustre/quota/lquota_internal.h index 31897da..f8f8340 100644 --- a/lustre/quota/lquota_internal.h +++ b/lustre/quota/lquota_internal.h @@ -21,7 +21,7 @@ * GPL HEADER END */ /* - * Copyright (c) 2012, 2014, Intel Corporation. + * Copyright (c) 2012, 2017, Intel Corporation. * Use is subject to license terms. */ @@ -31,7 +31,6 @@ #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) @@ -46,10 +45,26 @@ 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 */ @@ -65,8 +80,8 @@ struct lquota_entry_operations { /* Print debug information about a given lquota entry */ void (*lqe_debug)(struct lquota_entry *, void *, - struct libcfs_debug_msg_data *, const char *, - va_list); + struct libcfs_debug_msg_data *, + struct va_format *vaf); }; /* Per-ID information specific to the quota master target */ @@ -81,7 +96,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 +137,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 @@ -163,11 +178,12 @@ struct lquota_entry { } 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. @@ -279,8 +295,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; + } + + /* 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 */ @@ -289,7 +317,6 @@ struct lquota_thread_info { struct lu_buf qti_lb; struct lu_attr qti_attr; struct dt_object_format qti_dof; - struct lustre_mdt_attrs qti_lma; struct lu_fid qti_fid; char qti_buf[LQUOTA_NAME_MAX]; }; @@ -307,15 +334,7 @@ extern struct lu_context_key lquota_thread_key; static inline struct lquota_thread_info *lquota_info(const struct lu_env *env) { - struct lquota_thread_info *info; - - info = lu_context_key_get(&env->le_ctx, &lquota_thread_key); - if (info == NULL) { - lu_env_refill((struct lu_env *)env); - info = lu_context_key_get(&env->le_ctx, &lquota_thread_key); - } - LASSERT(info); - return info; + return lu_env_info(env, &lquota_thread_key); } #define req_is_acq(flags) ((flags & QUOTA_DQACQ_FL_ACQ) != 0) @@ -367,8 +386,8 @@ void lquota_lqe_debug0(struct lquota_entry *lqe, /* lquota_lib.c */ struct dt_object *acct_obj_lookup(const struct lu_env *, struct dt_device *, int); -void lquota_generate_fid(struct lu_fid *, int, int, int); -int lquota_extract_fid(const struct lu_fid *, int *, int *, int *); +void lquota_generate_fid(struct lu_fid *, int, int); +int lquota_extract_fid(const struct lu_fid *, int *, int *); const struct dt_index_features *glb_idx_feature(struct lu_fid *); /* lquota_entry.c */