X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre_quota.h;h=a153d6b2d2264e6136a9250f83315d3be2efc6c3;hp=1e128589d53c570607a908f79ae48e4c37880977;hb=9364f1f12c830985b4d262c6a963bc0949facd17;hpb=5700f5bc3c5bb0e65ca84f34c7b642066d8489e2;ds=sidebyside diff --git a/lustre/include/lustre_quota.h b/lustre/include/lustre_quota.h index 1e12858..a153d6b 100644 --- a/lustre/include/lustre_quota.h +++ b/lustre/include/lustre_quota.h @@ -397,39 +397,25 @@ struct lustre_qunit_size { #define LQS_KEY_ID(key) (key & 0xffffffff) #define LQS_KEY_GRP(key) (key >> 32) -static inline void __lqs_getref(struct lustre_qunit_size *lqs) +static inline void lqs_getref(struct lustre_qunit_size *lqs) { int count = cfs_atomic_inc_return(&lqs->lqs_refcount); - if (count == 2) /* quota_create_lqs */ - cfs_atomic_inc(&lqs->lqs_ctxt->lqc_lqs); CDEBUG(D_INFO, "lqs=%p refcount %d\n", lqs, count); } -static inline void lqs_getref(struct lustre_qunit_size *lqs) +static inline void lqs_putref(struct lustre_qunit_size *lqs) { - __lqs_getref(lqs); -} + int count = cfs_atomic_read(&lqs->lqs_refcount); -static inline void __lqs_putref(struct lustre_qunit_size *lqs) -{ - LASSERT(cfs_atomic_read(&lqs->lqs_refcount) > 0); + LASSERT(count > 0); + CDEBUG(D_INFO, "lqs=%p refcount %d\n", lqs, count - 1); - if (cfs_atomic_dec_return(&lqs->lqs_refcount) == 1) + if (cfs_atomic_dec_and_test(&lqs->lqs_refcount)) { if (cfs_atomic_dec_and_test(&lqs->lqs_ctxt->lqc_lqs)) cfs_waitq_signal(&lqs->lqs_ctxt->lqc_lqs_waitq); - CDEBUG(D_INFO, "lqs=%p refcount %d\n", - lqs, cfs_atomic_read(&lqs->lqs_refcount)); -} - -static inline void lqs_putref(struct lustre_qunit_size *lqs) -{ - __lqs_putref(lqs); -} - -static inline void lqs_initref(struct lustre_qunit_size *lqs) -{ - cfs_atomic_set(&lqs->lqs_refcount, 0); + OBD_FREE_PTR(lqs); + } } #else