From patchwork Fri Jul 27 20:11:29 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Fields X-Patchwork-Id: 1250591 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 38FC0E00A7 for ; Fri, 27 Jul 2012 20:11:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752802Ab2G0ULf (ORCPT ); Fri, 27 Jul 2012 16:11:35 -0400 Received: from fieldses.org ([174.143.236.118]:44216 "EHLO fieldses.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752561Ab2G0ULd (ORCPT ); Fri, 27 Jul 2012 16:11:33 -0400 Received: from bfields by fieldses.org with local (Exim 4.72) (envelope-from ) id 1Suqsl-0001eW-Gn; Fri, 27 Jul 2012 16:11:31 -0400 From: "J. Bruce Fields" To: Al Viro Cc: linux-nfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, "J. Bruce Fields" , Nick Piggin Subject: [PATCH 2/2] nfsd4: Don't set DISCONNECTED on "pseudo filesystem" dentries Date: Fri, 27 Jul 2012 16:11:29 -0400 Message-Id: <1343419889-6320-2-git-send-email-bfields@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1343419889-6320-1-git-send-email-bfields@redhat.com> References: <1343419889-6320-1-git-send-email-bfields@redhat.com> Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org 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 740b4f5..1b1e925 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1350,12 +1350,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);