Re: [PATCH 2/8] rhashtable: remove nulls_base and related code.
From: NeilBrown
Date: Sat May 05 2018 - 17:38:05 EST
On Sat, May 05 2018, Herbert Xu wrote:
> On Fri, May 04, 2018 at 01:54:14PM +1000, NeilBrown wrote:
>> This "feature" is unused, undocumented, and untested and so
>> doesn't really belong. If a use for the nulls marker
>> is found, all this code would need to be reviewed to
>> ensure it works as required. It would be just as easy to
>> just add the code if/when it is needed instead.
>>
>> This patch actually fixes a bug too. The table resizing allows a
>> table to grow to 2^31 buckets, but the hash is truncated to 27 bits -
>> any growth beyond 2^27 is wasteful an ineffective.
>>
>> This patch result in NULLS_MARKER(0) being used for all chains,
>> and leave the use of rht_is_a_null() to test for it.
>>
>> Signed-off-by: NeilBrown <neilb@xxxxxxxx>
>
> I disagree. This is a fundamental requirement for the use of
> rhashtable in certain networking systems such as TCP/UDP. So
> we know that there will be a use for this.
I can see no evidence that this is required for anything, as it isn't
use and I'm fairly sure that in it's current form - it cannot be used.
Based on my best guess about how you might intend to use it, I suspect
it would be simpler to store the address of the bucket head in the nuls
rather than the hash and a magic number. This would make it just as
easy to detect when a search reaches the end of the wrong chain, which I
presume is the purpose.
I would find that useful myself - if the search would repeat when that
happened - as I could then use SLAB_TYPESAFE_BY_RCU.
Were we to take this approach, all the code I've removed here would
still need to be removed.
>
> As to the bug fix, please separate it out of the patch and resubmit.
I don't know how to do that. I don't know what is safe to change
without "breaking" the nulls_base code because that code is undocumented and
unused, so unmaintainable.
In general the kernel has, I believe, a policy against keeping unused
interfaces. While that isn't firm and universal, is seems to apply
particularly well to unusable interfaces.
Thanks,
NeilBrown
>
> Thanks,
> --
> Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Attachment:
signature.asc
Description: PGP signature