mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
fs/namei.c: pull positivity check into follow_managed()
There are 4 callers; two proceed to check if result is positive and fail with ENOENT if it isn't; one (in handle_lookup_down()) is guaranteed to yield positive and one (in lookup_fast()) is _preceded_ by positivity check. However, follow_managed() on a negative dentry is a (fairly cheap) no-op on anything other than autofs. And negative autofs dentries are never hashed, so lookup_fast() is not going to run into one of those. Moreover, successful follow_managed() on a _positive_ dentry never yields a negative one (and we significantly rely upon that in callers of lookup_fast()). In other words, we can easily transpose the positivity check and the call of follow_managed() in lookup_fast(). And that allows to fold the positivity check *into* follow_managed(), simplifying life for the code downstream of its calls. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
3e5aeec0e2
commit
d41efb522e
2 changed files with 16 additions and 23 deletions
|
@ -440,6 +440,11 @@ static inline bool d_is_negative(const struct dentry *dentry)
|
|||
return d_is_miss(dentry);
|
||||
}
|
||||
|
||||
static inline bool d_flags_negative(unsigned flags)
|
||||
{
|
||||
return (flags & DCACHE_ENTRY_TYPE) == DCACHE_MISS_TYPE;
|
||||
}
|
||||
|
||||
static inline bool d_is_positive(const struct dentry *dentry)
|
||||
{
|
||||
return !d_is_negative(dentry);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue