diff options
author | George Spelvin <linux@sciencehorizons.net> | 2016-05-20 08:41:37 -0400 |
---|---|---|
committer | George Spelvin <linux@sciencehorizons.net> | 2016-05-28 15:42:50 -0400 |
commit | fcfd2fbf22d2587196890103d41e3d554c47da0e (patch) | |
tree | d8e67346881f72e06782c08305b88c8ce167b698 /fs/dcache.c | |
parent | f4bcbe792b8f434e32487cff9d9e30ab45a3ce02 (diff) |
fs/namei.c: Add hashlen_string() function
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 <linux@sciencehorizons.net>
Diffstat (limited to 'fs/dcache.c')
-rw-r--r-- | fs/dcache.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/dcache.c b/fs/dcache.c index d5ecc6e477da..19b751806789 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
@@ -1653,8 +1653,7 @@ struct dentry *d_alloc_name(struct dentry *parent, const char *name) | |||
1653 | struct qstr q; | 1653 | struct qstr q; |
1654 | 1654 | ||
1655 | q.name = name; | 1655 | q.name = name; |
1656 | q.len = strlen(name); | 1656 | q.hash_len = hashlen_string(name); |
1657 | q.hash = full_name_hash(q.name, q.len); | ||
1658 | return d_alloc(parent, &q); | 1657 | return d_alloc(parent, &q); |
1659 | } | 1658 | } |
1660 | EXPORT_SYMBOL(d_alloc_name); | 1659 | EXPORT_SYMBOL(d_alloc_name); |