Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp2816946rda; Wed, 25 Oct 2023 13:12:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGu5VyVEJF7cxebMIbdrA2ZXCVwM2//vNaM5OLV6Qs8P9humjMlgTaryRYHGVcYEQNLD2Gy X-Received: by 2002:aca:f0a:0:b0:3ad:c5e7:8e11 with SMTP id 10-20020aca0f0a000000b003adc5e78e11mr17056455oip.0.1698264731022; Wed, 25 Oct 2023 13:12:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698264730; cv=none; d=google.com; s=arc-20160816; b=U8OU9R1ZNSyI2SuQsGPlK4YwytCSu/gm28EnR7cU7NiuwDzk/OZW6MOkaPNI7wePEA iij1vQsexqUaNDnyh+HConrrO8FNxzQyM+1hmt4CUskb+4J5FZBEDjrzt+OhN/xnzEtX piFvL/HaBPi7FdN592Z40oMtw2Y9irwVEAqKJgKKVSxQOguOPO9uvp7zGm7d++JOZRah GpsGQuDWmHBK0a4aJR6+jCKc9H3wpEcksO4cgudZw/6FqkGScWWmxx8PGuOJ7nbw7ehH aajxEWYbICWe5QByB54IenscN3LkS7j0nlszjJHA2k1Q+EVZF3fYqztV9P7xi7iP6JDH JJrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Oa3tZ8nEmTQ7g03CpQabtkzzRCmD2YRrHZ3zkA1/K5k=; fh=kMe8ipV+H2zZMCwplNV8b/uzUHICYp+b9TeU6KoaKrQ=; b=JgUY6r/4MbJi1EFvUYRMod6ao5ATzKWDZbCJgd1OilNXb4NaLRHQld8TBBTFF6LhpM 8C2x/ydbsAJCWw/NuohEx+6gUnLcHxfjQ55yMIiGikpE6/TCiOzXrHkXKgslopTKTak3 fjXK+tta6ewMZu3SSyrZAMY26uBjlwGoFu7EacDbp2wMl64gGaqemc4gQnbjUyvmJWrB 9srkfiiKm6pc9RVpckSrG154ZtCIWLR+exC3wqCvRu/0tEK1jFwCyexGKQjUR/ybepCY CRK54uhFjinSK5Jtylco0uL7vC06MwDS25Vk4WJcN4ltT4vJ8WYXv77Od2KRFM+pyvcc l4Yw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jK1YHJB4; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id o7-20020a056902110700b00d9cc11ca55esi16562615ybu.215.2023.10.25.13.12.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Oct 2023 13:12:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jK1YHJB4; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id DB37E8184E14; Wed, 25 Oct 2023 13:12:09 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230049AbjJYUMJ (ORCPT + 99 others); Wed, 25 Oct 2023 16:12:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51264 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229441AbjJYUMI (ORCPT ); Wed, 25 Oct 2023 16:12:08 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7A37136 for ; Wed, 25 Oct 2023 13:11:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698264682; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Oa3tZ8nEmTQ7g03CpQabtkzzRCmD2YRrHZ3zkA1/K5k=; b=jK1YHJB4gQx5Snm+Bh8hAFYYY2kzKhlk4xduMfS8nIelDApKj+TC33Ww+8tqMbEMdJTl8J qfPmKk/LpZorvFGYFNanUTFsDDdyKWhkZWqJNqNOAMCsOjYHW2LJ5beYxWkiB5WxkvjtpR RtaedveqNyAIUrtGbogoTD4O/qhzGos= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-642-Mjg52eYnOqSySFApoXAMcQ-1; Wed, 25 Oct 2023 16:11:17 -0400 X-MC-Unique: Mjg52eYnOqSySFApoXAMcQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2D665185A785; Wed, 25 Oct 2023 20:11:17 +0000 (UTC) Received: from bcodding.csb.redhat.com (unknown [10.22.50.5]) by smtp.corp.redhat.com (Postfix) with ESMTP id BCA5D1C060AE; Wed, 25 Oct 2023 20:11:16 +0000 (UTC) From: Benjamin Coddington To: trond.myklebust@hammerspace.com, anna@kernel.org Cc: linux-nfs@vger.kernel.org Subject: [PATCH v3 1/2] NFSv4: Always ask for type with READDIR Date: Wed, 25 Oct 2023 16:11:14 -0400 Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 25 Oct 2023 13:12:10 -0700 (PDT) Again we have claimed regressions for walking a directory tree, this time with the "find" utility which always tries to optimize away asking for any attributes until it has a complete list of entries. This behavior makes the readdir plus heuristic do the wrong thing, which causes a storm of GETATTRs to determine each entry's type in order to continue the walk. For v4 add the type attribute to each READDIR request to include it no matter the heuristic. This allows a simple `find` command to proceed quickly through a directory tree. Suggested-by: Jeff Layton Signed-off-by: Benjamin Coddington Reviewed-by: Jeff Layton --- fs/nfs/nfs4xdr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index deec76cf5afe..7200d6f7cd7b 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -1602,7 +1602,7 @@ static void encode_read(struct xdr_stream *xdr, const struct nfs_pgio_args *args static void encode_readdir(struct xdr_stream *xdr, const struct nfs4_readdir_arg *readdir, struct rpc_rqst *req, struct compound_hdr *hdr) { uint32_t attrs[3] = { - FATTR4_WORD0_RDATTR_ERROR, + FATTR4_WORD0_TYPE|FATTR4_WORD0_RDATTR_ERROR, FATTR4_WORD1_MOUNTED_ON_FILEID, }; uint32_t dircount = readdir->count; @@ -1612,7 +1612,7 @@ static void encode_readdir(struct xdr_stream *xdr, const struct nfs4_readdir_arg unsigned int i; if (readdir->plus) { - attrs[0] |= FATTR4_WORD0_TYPE|FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE| + attrs[0] |= FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE| FATTR4_WORD0_FSID|FATTR4_WORD0_FILEHANDLE|FATTR4_WORD0_FILEID; attrs[1] |= FATTR4_WORD1_MODE|FATTR4_WORD1_NUMLINKS|FATTR4_WORD1_OWNER| FATTR4_WORD1_OWNER_GROUP|FATTR4_WORD1_RAWDEV| -- 2.41.0