dcache: Don't set DISCONNECTED on "pseudo filesystem" dentries
I can't for the life of me see any reason why anyone should care whether
a dentry that is never hooked into the dentry cache would need
DCACHE_DISCONNECTED set.
This originates from 4b936885ab
"fs:
improve scalability of pseudo filesystems", which probably just made the
false assumption the DCACHE_DISCONNECTED was meant to be set on anything
not connected to a parent somehow.
So this is just confusing. Ideally the only uses of DCACHE_DISCONNECTED
would be in the filehandle-lookup code, which needs it to ensure
dentries are connected into the dentry tree before use.
I left d_alloc_pseudo there even though it's now equivalent to
__d_alloc(), just on the theory the name is better documentation of its
intended use outside dcache.c.
Cc: Nick Piggin <npiggin@kernel.dk>
Acked-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
7632e465fe
commit
e1a24bb0aa
13
fs/dcache.c
13
fs/dcache.c
|
@ -1607,12 +1607,17 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(d_alloc);
|
EXPORT_SYMBOL(d_alloc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* d_alloc_pseudo - allocate a dentry (for lookup-less filesystems)
|
||||||
|
* @sb: the superblock
|
||||||
|
* @name: qstr of the name
|
||||||
|
*
|
||||||
|
* For a filesystem that just pins its dentries in memory and never
|
||||||
|
* performs lookups at all, return an unhashed IS_ROOT dentry.
|
||||||
|
*/
|
||||||
struct dentry *d_alloc_pseudo(struct super_block *sb, const struct qstr *name)
|
struct dentry *d_alloc_pseudo(struct super_block *sb, const struct qstr *name)
|
||||||
{
|
{
|
||||||
struct dentry *dentry = __d_alloc(sb, name);
|
return __d_alloc(sb, name);
|
||||||
if (dentry)
|
|
||||||
dentry->d_flags |= DCACHE_DISCONNECTED;
|
|
||||||
return dentry;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(d_alloc_pseudo);
|
EXPORT_SYMBOL(d_alloc_pseudo);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue