From: laijs@cn.fujitsu.com (Lai Jiangshan)
Subject: [ltt-dev] [PATCH 3/7] rculfhash: make cds_lfht_lookup() more generic
Date: Fri, 04 Nov 2011 21:15:43 +0800 [thread overview]
Message-ID: <4EB3E57F.4020705@cn.fujitsu.com> (raw)
In-Reply-To: <20111104100823.GA26078@Krystal>
On 11/04/2011 06:08 PM, Mathieu Desnoyers wrote:
> * Lai Jiangshan (laijs at cn.fujitsu.com) wrote:
>> On 11/03/2011 01:23 AM, Mathieu Desnoyers wrote:
>>> * Lai Jiangshan (laijs at cn.fujitsu.com) wrote:
>>>> We use hash value to determine the range of the object
>>>> and use cds_lfht_lookup_fct to lookup them.
>>>>
>>>> Signed-off-by: Lai Jiangshan <laijs at cn.fujitsu.com>
>>>> ---
>>>> rculfhash.c | 8 ++++----
>>>> tests/test_urcu_hash.c | 25 ++++++++++++++++++++++---
>>>> urcu/rculfhash.h | 4 +++-
>>>> 3 files changed, 29 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/rculfhash.c b/rculfhash.c
>>>> index d1a1766..29054cd 100644
>>>> --- a/rculfhash.c
>>>> +++ b/rculfhash.c
>>>> @@ -1391,14 +1391,14 @@ struct cds_lfht *_cds_lfht_new(cds_lfht_hash_fct hash_fct,
>>>> return ht;
>>>> }
>>>>
>>>> -void cds_lfht_lookup(struct cds_lfht *ht, void *key, size_t key_len,
>>>> +void cds_lfht_lookup(struct cds_lfht *ht, unsigned long hash,
>>>> + cds_lfht_lookup_fct match, void *arg,
>>>
>>> arg -> key ?
>>>
>>> for "match", our approach is to provide this function as parameter to
>>> cds_lfht_new rather than pass it as parameter each time a lookup is
>>> performed. What is the reason why we should pass it here as a parameter?
>>>
>>
>> Allow the user define it.
>> In the test, I pass match = a function always returns true when need,
>> thus cds_lfht_lookup() returns the first node of same-hash-value-chain.
>
> This looks like an interesting debug and testing feature, but I don't
> really see why we should complicate the API to include this. Is there a
> real-life use-case you have in mind besides testing ?
>
> If we only need this for testing, we can use a static variable in the
> test program to influence the behavior of cds_lfht_test_lookup.
>
> The other patches look fine, I'm just concerned about this one because
> it adds complexity to the API which does not seem useful to end-users.
>
I think a generic API is OK.
Sometimes the caller don't have the key or the keys which are big
are saved separated. Example: file server
Or key comparation is too slow.
Or caller just need approximate lookup.
Or caller want to compare keys with different strategies for performance.
next prev parent reply other threads:[~2011-11-04 13:15 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-02 7:50 [ltt-dev] [PATCH 0/7] rculfhash: More proper APIs and struct cds_lfht_node Lai Jiangshan
2011-11-02 7:50 ` [ltt-dev] [PATCH 1/7] rculfhash, test: wrap " Lai Jiangshan
2011-11-02 17:16 ` Mathieu Desnoyers
2011-11-02 7:50 ` [ltt-dev] [PATCH 2/7] rculfhash: Move "struct rcu_head head" out of "struct cds_lfht_node" Lai Jiangshan
2011-11-02 17:18 ` Mathieu Desnoyers
2011-11-02 7:50 ` [ltt-dev] [PATCH 3/7] rculfhash: make cds_lfht_lookup() more generic Lai Jiangshan
2011-11-02 17:23 ` Mathieu Desnoyers
2011-11-03 14:07 ` Lai Jiangshan
2011-11-04 10:08 ` Mathieu Desnoyers
2011-11-04 13:15 ` Lai Jiangshan [this message]
2011-11-04 13:53 ` Mathieu Desnoyers
2011-11-04 15:01 ` Lai Jiangshan
2011-11-05 13:08 ` Mathieu Desnoyers
2011-11-02 7:50 ` [ltt-dev] [PATCH 4/7] rculfhash: Comparision API use node pointer instead of key Lai Jiangshan
2011-11-05 13:10 ` Mathieu Desnoyers
2011-11-02 7:50 ` [ltt-dev] [PATCH 5/7] rculfhash: Pass hash value to cds_lfht_add* APIs Lai Jiangshan
2011-11-05 13:10 ` Mathieu Desnoyers
2011-11-02 7:50 ` [ltt-dev] [PATCH 6/7] rculfhash: Move key out of struct lfht_test_node Lai Jiangshan
2011-11-05 13:12 ` Mathieu Desnoyers
2011-11-05 13:42 ` Mathieu Desnoyers
2011-11-05 13:52 ` Mathieu Desnoyers
2011-11-02 7:50 ` [ltt-dev] [PATCH 7/7] rculfhash: cleanup struct _cds_lfht_node Lai Jiangshan
2011-11-04 7:47 ` [ltt-dev] [PATCH 1/2] rculfhash: rename dummy to bucket Lai Jiangshan
2011-11-04 7:47 ` [ltt-dev] [PATCH 2/2] rculfhash: simplify BUCKET_FLAG tracking Lai Jiangshan
2011-11-05 14:07 ` Mathieu Desnoyers
2011-11-05 13:54 ` [ltt-dev] [PATCH 1/2] rculfhash: rename dummy to bucket Mathieu Desnoyers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EB3E57F.4020705@cn.fujitsu.com \
--to=laijs@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox