Whamcloud - gitweb
LU-5436 quota: use OBD_SLAB_FREE_PTR() to free lqe
[fs/lustre-release.git] / lustre / quota / lquota_internal.h
index 990b45b..490b1bc 100644 (file)
@@ -21,7 +21,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright (c) 2012 Whamcloud, Inc.
+ * Copyright (c) 2012, Intel Corporation.
  * Use is subject to license terms.
  */
 
@@ -85,7 +85,7 @@ struct lquota_mst_entry {
 
        /* r/w semaphore used to protect concurrent access to the quota
         * parameters which are stored on disk */
-       cfs_rw_semaphore_t      lme_sem;
+       struct rw_semaphore     lme_sem;
 
        /* quota space that may be released after glimpse */
        __u64                   lme_may_rel;
@@ -113,10 +113,10 @@ struct lquota_slv_entry {
        unsigned int            lse_pending_req;
 
        /* rw spinlock protecting in-memory counters (i.e. lse_pending*) */
-       cfs_rwlock_t            lse_lock;
+       rwlock_t                lse_lock;
 
        /* waiter for pending request done */
-       cfs_waitq_t             lse_waiters;
+       wait_queue_head_t       lse_waiters;
 
        /* hint on current on-disk usage, in inodes or kbytes */
        __u64                   lse_usage;
@@ -129,13 +129,16 @@ struct lquota_slv_entry {
 
        /* when latest acquire RPC completed */
        __u64                   lse_acq_time;
+
+       /* when latest edquot set */
+       __u64                   lse_edquot_time;
 };
 
 /* In-memory entry for each enforced quota id
  * A lquota_entry structure belong to a single lquota_site */
 struct lquota_entry {
        /* link to site hash table */
-       cfs_hlist_node_t         lqe_hash;
+       struct hlist_node        lqe_hash;
 
        /* quota identifier associated with this entry */
        union lquota_id          lqe_id;
@@ -144,12 +147,12 @@ struct lquota_entry {
        struct lquota_site      *lqe_site;
 
        /* reference counter */
-       cfs_atomic_t             lqe_ref;
+       atomic_t                 lqe_ref;
 
        /* linked to list of lqes which:
         * - need quota space adjustment on slave
         * - need glimpse to be sent on master */
-       cfs_list_t               lqe_link;
+       struct list_head         lqe_link;
 
        /* current quota settings/usage of this ID */
        __u64           lqe_granted; /* granted limit, inodes or kbytes */
@@ -208,15 +211,18 @@ struct lquota_site {
 #define lqe_lockh              u.se.lse_lockh
 #define lqe_acq_rc             u.se.lse_acq_rc
 #define lqe_acq_time           u.se.lse_acq_time
+#define lqe_edquot_time                u.se.lse_edquot_time
 
 #define LQUOTA_BUMP_VER 0x1
 #define LQUOTA_SET_VER  0x2
 
+extern struct kmem_cache *lqe_kmem;
+
 /* helper routine to get/put reference on lquota_entry */
 static inline void lqe_getref(struct lquota_entry *lqe)
 {
        LASSERT(lqe != NULL);
-       cfs_atomic_inc(&lqe->lqe_ref);
+       atomic_inc(&lqe->lqe_ref);
 }
 
 static inline void lqe_putref(struct lquota_entry *lqe)
@@ -224,7 +230,7 @@ static inline void lqe_putref(struct lquota_entry *lqe)
        LASSERT(lqe != NULL);
        LASSERT(atomic_read(&lqe->lqe_ref) > 0);
        if (atomic_dec_and_test(&lqe->lqe_ref))
-               OBD_FREE_PTR(lqe);
+               OBD_SLAB_FREE_PTR(lqe, lqe_kmem);
 }
 
 static inline int lqe_is_master(struct lquota_entry *lqe)
@@ -236,33 +242,33 @@ static inline int lqe_is_master(struct lquota_entry *lqe)
 static inline void lqe_write_lock(struct lquota_entry *lqe)
 {
        if (lqe_is_master(lqe))
-               cfs_down_write(&lqe->lqe_sem);
+               down_write(&lqe->lqe_sem);
        else
-               cfs_write_lock(&lqe->lqe_lock);
+               write_lock(&lqe->lqe_lock);
 }
 
 static inline void lqe_write_unlock(struct lquota_entry *lqe)
 {
        if (lqe_is_master(lqe))
-               cfs_up_write(&lqe->lqe_sem);
+               up_write(&lqe->lqe_sem);
        else
-               cfs_write_unlock(&lqe->lqe_lock);
+               write_unlock(&lqe->lqe_lock);
 }
 
 static inline void lqe_read_lock(struct lquota_entry *lqe)
 {
        if (lqe_is_master(lqe))
-               cfs_down_read(&lqe->lqe_sem);
+               down_read(&lqe->lqe_sem);
        else
-               cfs_read_lock(&lqe->lqe_lock);
+               read_lock(&lqe->lqe_lock);
 }
 
 static inline void lqe_read_unlock(struct lquota_entry *lqe)
 {
        if (lqe_is_master(lqe))
-               cfs_up_read(&lqe->lqe_sem);
+               up_read(&lqe->lqe_sem);
        else
-               cfs_read_unlock(&lqe->lqe_lock);
+               read_unlock(&lqe->lqe_lock);
 }
 
 /*
@@ -271,7 +277,7 @@ static inline void lqe_read_unlock(struct lquota_entry *lqe)
 
 /* minimum qunit size, 1K inode for metadata pool and 1MB for data pool */
 #define LQUOTA_LEAST_QUNIT(type) \
-       (type == LQUOTA_RES_MD ? (1 << 10) : toqb(PTLRPC_MAX_BRW_SIZE))
+       (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)
@@ -364,7 +370,6 @@ struct dt_object *acct_obj_lookup(const struct lu_env *, struct dt_device *,
 void lquota_generate_fid(struct lu_fid *, int, int, int);
 int lquota_extract_fid(const struct lu_fid *, int *, int *, int *);
 const struct dt_index_features *glb_idx_feature(struct lu_fid *);
-extern cfs_mem_cache_t *lqe_kmem;
 
 /* lquota_entry.c */
 /* site create/destroy */