diff options
Diffstat (limited to 'xlators/features/quota/src/quota.h')
-rw-r--r-- | xlators/features/quota/src/quota.h | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/xlators/features/quota/src/quota.h b/xlators/features/quota/src/quota.h index 84ecbb30..de9f6f16 100644 --- a/xlators/features/quota/src/quota.h +++ b/xlators/features/quota/src/quota.h @@ -25,6 +25,14 @@ #define CONTRIBUTION "contri" #define VAL_LENGTH 8 #define READDIR_BUF 4096 +#define QUOTA_UPDATE_USAGE_KEY "quota-update-usage" + +#define WIND_IF_QUOTAOFF(is_quota_on, label) \ + if (!is_quota_on) \ + goto label; + +#define DID_REACH_LIMIT(lim, prev_size, cur_size) \ + ((cur_size) >= (lim) && (prev_size) < (lim)) #define QUOTA_SAFE_INCREMENT(lock, var) \ do { \ @@ -46,7 +54,7 @@ gf_quota_mt_##type); \ if (!var) { \ gf_log ("", GF_LOG_ERROR, \ - "out of memory :("); \ + "out of memory"); \ ret = -1; \ goto label; \ } \ @@ -96,6 +104,8 @@ goto label; \ } while (0) + + struct quota_dentry { char *name; uuid_t par; @@ -105,7 +115,8 @@ typedef struct quota_dentry quota_dentry_t; struct quota_inode_ctx { int64_t size; - int64_t limit; + int64_t hard_lim; + int64_t soft_lim; struct iatt buf; struct list_head parents; struct timeval tv; @@ -125,27 +136,52 @@ struct quota_local { int32_t op_ret; int32_t op_errno; int64_t size; - int64_t limit; + int64_t hard_lim; + int64_t soft_lim; char just_validated; inode_t *inode; call_stub_t *stub; }; typedef struct quota_local quota_local_t; + +struct qd_vols_conf { + char *name; + inode_table_t *itable; + uint32_t log_timeout; + gf_boolean_t threads_status; + double default_soft_lim; + gf_lock_t lock; + loc_t root_loc; + uint32_t soft_timeout; + uint32_t hard_timeout; + struct list_head limit_head; + call_frame_t *frame; +}; +typedef struct qd_vols_conf qd_vols_conf_t; + + struct quota_priv { - int64_t timeout; - gf_boolean_t consider_statfs; - struct list_head limit_head; - gf_lock_t lock; + int64_t timeout; + double default_soft_lim; + gf_boolean_t is_quota_on; + gf_boolean_t consider_statfs; + struct list_head limit_head; + qd_vols_conf_t **qd_vols_conf; + gf_lock_t lock; }; typedef struct quota_priv quota_priv_t; + struct limits { struct list_head limit_list; char *path; - int64_t value; uuid_t gfid; + int64_t prev_size; + struct timeval prev_log_tv; + int64_t hard_lim; + int64_t soft_lim; + struct timeval expire; + uint32_t timeout; }; typedef struct limits limits_t; - -uint64_t cn = 1; |