From f8930ce4318831be7bf279d601a69b9cf48f2fa2 Mon Sep 17 00:00:00 2001 From: Landen Date: Fri, 29 Jan 2010 15:04:53 +0800 Subject: [PATCH] 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 --- libcfs/include/libcfs/libcfs_hash.h | 6 ++---- lustre/quota/quota_context.c | 11 +++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) 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, -- 1.8.3.1