From: Landen Date: Fri, 29 Jan 2010 07:04:53 +0000 (+0800) Subject: b=21846 add a hs_key entry in lqs hash operations X-Git-Tag: 1.10.0.36~15 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=f8930ce4318831be7bf279d601a69b9cf48f2fa2;ds=sidebyside b=21846 add a hs_key entry in lqs hash operations When lqs rehashes, it will call its hs_key method. If it isn't defined, an assert will be triggered. The patch just add it for lqs hash. a=johann i=landen i=adilger --- diff --git a/libcfs/include/libcfs/libcfs_hash.h b/libcfs/include/libcfs/libcfs_hash.h index e195c24..73cfe01 100644 --- a/libcfs/include/libcfs/libcfs_hash.h +++ b/libcfs/include/libcfs/libcfs_hash.h @@ -175,11 +175,9 @@ cfs_hash_key(cfs_hash_t *hs, cfs_hlist_node_t *hnode) LASSERT(hs); LASSERT(hnode); LASSERT(CFS_HO(hs)); + LASSERT(CFS_HOP(hs, key)); - if (CFS_HOP(hs, key)) - return CFS_HOP(hs, key)(hnode); - - return NULL; + return CFS_HOP(hs, key)(hnode); } /* Returns 1 on a match, diff --git a/lustre/quota/quota_context.c b/lustre/quota/quota_context.c index 57ac31d..859deee 100644 --- a/lustre/quota/quota_context.c +++ b/lustre/quota/quota_context.c @@ -1587,6 +1587,16 @@ lqs_hash(cfs_hash_t *hs, void *key, unsigned mask) RETURN(hash & mask); } +static void * +lqs_key(cfs_hlist_node_t *hnode) +{ + struct lustre_qunit_size *lqs; + ENTRY; + + lqs = cfs_hlist_entry(hnode, struct lustre_qunit_size, lqs_hash); + RETURN(&lqs->lqs_key); +} + static int lqs_compare(void *key, cfs_hlist_node_t *hnode) { @@ -1649,6 +1659,7 @@ lqs_exit(cfs_hlist_node_t *hnode) static cfs_hash_ops_t lqs_hash_ops = { .hs_hash = lqs_hash, + .hs_key = lqs_key, .hs_compare = lqs_compare, .hs_get = lqs_get, .hs_put = lqs_put,