Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp3423674rdg; Tue, 17 Oct 2023 14:31:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFQqPkdKgS7dQlwqY+yDh8JyGjk6kLf32bMb6v+YpPW3YkTB4Xb8PaU6ni6wDsh2+vS/f5G X-Received: by 2002:a05:6870:2e0d:b0:1e9:e923:9520 with SMTP id oi13-20020a0568702e0d00b001e9e9239520mr3579455oab.11.1697578311721; Tue, 17 Oct 2023 14:31:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697578311; cv=none; d=google.com; s=arc-20160816; b=a5gh49Sb4pMZs+ID6DPitvgWzR/9VVvnffM28mT2+z6qAFB2DeBiaYrX6wY//8mE4X kiYWYhH/0gv0laeIjfO81aLUbJT2sj/zPnTxWLazeTUPfQ3MX66vsrWh5rhuuthrDBns ieH/Y7Rqg5y7ClRtIj+bctpYOGp4fGb/oZpXEQx9pGSiBioV1OpYy7Xe6R54Jq9tjlNb dvhhEFfaCcCyO1bj7Dwn75PzxXWFa6r1AuUmjljFUKnU+liRo8fUHV29QIBQFNb/zIzU 7JqzG++6Gm+bw9+htQ3pRV2KfzATLqhMVLWv6QLKzvlkjbQj1Aa9wR5YbbqaZ8MoRedm EMYg== 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=yVXDitoEiKW3gSfW6EPuizgS/b7VADIh9y+pQLtImRxFY7HLagD6+EmP+lIY99vpUE Xa9Er1J3Ne2KnDC/NBzVu6PRBq987ESsgzCG/q4M1AM4A8S/ErC8Ao5j+7PqTOSrw6nX eGJZ3MbyK3rKathJWU77zjI5d7ptFxp/7btvZl2D7n3GdwFAttQlU5kAxa72av2piOmU RGm+xainQGAaqZcp++JGpCuwyWfchee0mnNf22MYkLURhxVId+urnaHjV+ZDeUp+P91f JjVcpeJyBLSvWzr/5D+8Vmpx4m88qqAanr7DIY+HTo8P/LF5kaCNns1XJbsdN3Ap2RNV ghGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Aem7lGPg; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:4 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 howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id by35-20020a056a0205a300b00578d0d070f7si790416pgb.659.2023.10.17.14.31.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 14:31:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Aem7lGPg; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::3:4 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 howler.vger.email (Postfix) with ESMTP id 55830807F487; Tue, 17 Oct 2023 14:31:49 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343885AbjJQVbp (ORCPT + 99 others); Tue, 17 Oct 2023 17:31:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235053AbjJQVbm (ORCPT ); Tue, 17 Oct 2023 17:31:42 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 429A0F9 for ; Tue, 17 Oct 2023 14:30:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697578254; 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=Aem7lGPgeZQp8hDKfj73p2pHjUbCeix+yOcfiSNWjIzUCcVis1jP4EdSc/6xvedTQT8iVN QBhHRrZxEcFKT0kLTM+JrFFU6MS5iNS4buB7E71kTPagJrQvTGBOSelNKmrIE8O0mJwVLY igpL/CfAkHpvDM6o/nRF5L6NX5zr1NM= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-343-9wwN7e38PrmpYOcQZYWQXA-1; Tue, 17 Oct 2023 17:30:46 -0400 X-MC-Unique: 9wwN7e38PrmpYOcQZYWQXA-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C02C1185A797; Tue, 17 Oct 2023 21:30:45 +0000 (UTC) Received: from bcodding.csb.redhat.com (unknown [10.22.48.7]) by smtp.corp.redhat.com (Postfix) with ESMTP id 408A9C15BB8; Tue, 17 Oct 2023 21:30:45 +0000 (UTC) From: Benjamin Coddington To: trond.myklebust@hammerspace.com, anna@kernel.org Cc: linux-nfs@vger.kernel.org Subject: [PATCH 1/2] NFSv4: Always ask for type with READDIR Date: Tue, 17 Oct 2023 17:30:43 -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.8 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email 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 (howler.vger.email [0.0.0.0]); Tue, 17 Oct 2023 14:31:49 -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