12 Jun, 2016

1 commit

  • Noe that we're mixing in the parent pointer earlier, we
    don't need to use hash_32() to mix its bits. Instead, we can
    just take the msbits of the hash value directly.

    For those applications which use the partial_name_hash(),
    move the multiply to end_name_hash.

    Signed-off-by: George Spelvin
    Signed-off-by: Linus Torvalds

    George Spelvin
     

11 Jun, 2016

1 commit

  • We always mixed in the parent pointer into the dentry name hash, but we
    did it late at lookup time. It turns out that we can simplify that
    lookup-time action by salting the hash with the parent pointer early
    instead of late.

    A few other users of our string hashes also wanted to mix in their own
    pointers into the hash, and those are updated to use the same mechanism.

    Hash users that don't have any particular initial salt can just use the
    NULL pointer as a no-salt.

    Cc: Vegard Nossum
    Cc: George Spelvin
    Cc: Al Viro
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

29 May, 2016

2 commits

  • We'd like to make more use of the highly-optimized dcache hash functions
    throughout the kernel, rather than have every subsystem create its own,
    and a function that hashes basic null-terminated strings is required
    for that.

    (The name is to emphasize that it returns both hash and length.)

    It's actually useful in the dcache itself, specifically d_alloc_name().
    Other uses in the next patch.

    full_name_hash() is also tweaked to make it more generally useful:
    1) Take a "char *" rather than "unsigned char *" argument, to
    be consistent with hash_name().
    2) Handle zero-length inputs. If we want more callers, we don't want
    to make them worry about corner cases.

    Signed-off-by: George Spelvin

    George Spelvin
     
  • ... so they can be used without the rest of

    The hashlen_* macros will make sense next patch.

    Signed-off-by: George Spelvin

    George Spelvin