lkml.org 
[lkml]   [2018]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 2/8] rhashtable: remove nulls_base and related code.
    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@suse.com>
    >
    > 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@gondor.apana.org.au>
    > Home Page: http://gondor.apana.org.au/~herbert/
    > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2018-05-05 23:38    [W:2.488 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site