From mboxrd@z Thu Jan 1 00:00:00 1970 From: "J. Bruce Fields" Subject: [PATCH 2/2] dcache: Don't set DISCONNECTED on "pseudo filesystem" dentries Date: Tue, 21 Aug 2012 17:37:12 -0400 Message-ID: <1345585032-19119-3-git-send-email-bfields@redhat.com> References: <1345585032-19119-1-git-send-email-bfields@redhat.com> Cc: linux-nfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, "J. Bruce Fields" , Nick Piggin To: Al Viro Return-path: Received: from fieldses.org ([174.143.236.118]:49682 "EHLO fieldses.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758644Ab2HUVhT (ORCPT ); Tue, 21 Aug 2012 17:37:19 -0400 In-Reply-To: <1345585032-19119-1-git-send-email-bfields@redhat.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: From: "J. Bruce Fields" I can't for the life of me see any reason why anyone would care whether a dentry that is never hooked into the dentry cache would need DCACHE_DISCONNECTED set. This originates from 4b936885ab04dc6e0bb0ef35e0e23c1a7364d9e5 "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 use 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 Signed-off-by: J. Bruce Fields --- fs/dcache.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fs/dcache.c b/fs/dcache.c index ea2fcfa..c4b9d4f2c 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1352,12 +1352,13 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name) } EXPORT_SYMBOL(d_alloc); +/* + * For filesystems that do not actually use the dentry cache at all, and + * only ever deal in IS_ROOT() dentries: + */ struct dentry *d_alloc_pseudo(struct super_block *sb, const struct qstr *name) { - struct dentry *dentry = __d_alloc(sb, name); - if (dentry) - dentry->d_flags |= DCACHE_DISCONNECTED; - return dentry; + return __d_alloc(sb, name); } EXPORT_SYMBOL(d_alloc_pseudo); -- 1.7.11.4