Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp4486746imb; Wed, 6 Mar 2019 14:50:34 -0800 (PST) X-Google-Smtp-Source: APXvYqznzgJaNRrDvYxCB0nsQb1ClZEUpf/fsgOFDl5ibUHXXRWoNst/e19Mt/US9KdY0B3DYxzT X-Received: by 2002:a63:c946:: with SMTP id y6mr8539980pgg.109.1551912634773; Wed, 06 Mar 2019 14:50:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551912634; cv=none; d=google.com; s=arc-20160816; b=O+8rPTkgYY8iqLr04z8gbkrVHKG8nIvrZuHx1lZIJnwpq2gWAHYphn565mGYZdDCzI Id3ILFyPSo1S2jkfmYhgwXM2/MLRckuzboNarMZ8eBFjivNSTMxY8cASJp//8YyWxQp1 l3/fXd+51YcyUvJ1O9G1Hse0U7RJvmgst2MfRO4fNwuaiOwT7Ffzin/ZLx3f1cTlcMOS bCulNR6yS23c1ZxahK6ormXcVfmxAun65G4LAxzAksJTJkFYwBZcZQIC8PjZTtAzRjUo XQUzAJNBtMpSxxIgE1VHrwlPjUWc58zTdLCelUBB9yDWAeK2oC32eIwEWzo5d0d0vFkY TGTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:references :in-reply-to:subject:cc:date:to:from; bh=+eO+EZe7IvW+3pCopTiU9V7xQPMTnkRFKPx4xPDyuiQ=; b=Lv+OVvvhp3V97ILVo8moEw+OzvnKBhGETBHwWQI3J7aplCGu+Z/nd2rLFI+vUtLsxF 4VAkKs1he1RZkRAZjf1KgBb9TquWN5Aj+IgwITNCyPpBciUEYQ9pTN3GS6iLjv9DmPVS RX2gYWcZT4P1lNmSkSoW0pXNG2O2h6aRRrhZCAcp1EDYJDIkX13bP3zI1/L2zZQunKXT kXOVEVTTFFskUGorRErmK6ThsWdoGVexor+VhLezP08YRU4IVSHjGyjkFiRIAD1a0bsg hbrAQRz6TsRST7CYWYGL6SpaHw8p486+j1BBCKBhVdnKcjBvOigo/FNJSazqt/vs3iwl QrBg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v1si2419842pgn.583.2019.03.06.14.50.19; Wed, 06 Mar 2019 14:50:34 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726150AbfCFWt4 (ORCPT + 99 others); Wed, 6 Mar 2019 17:49:56 -0500 Received: from mx2.suse.de ([195.135.220.15]:44994 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725783AbfCFWt4 (ORCPT ); Wed, 6 Mar 2019 17:49:56 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 03E4CB615; Wed, 6 Mar 2019 22:49:54 +0000 (UTC) From: NeilBrown To: "J. Bruce Fields" Date: Thu, 07 Mar 2019 09:49:46 +1100 Cc: Jeff Layton , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] nfsd: allow nfsv3 readdir request to be larger. In-Reply-To: <20190305214212.GC27437@fieldses.org> References: <87lg1vs5eh.fsf@notabene.neil.brown.name> <20190304164725.GE13690@fieldses.org> <877ederyjm.fsf@notabene.neil.brown.name> <20190305214212.GC27437@fieldses.org> Message-ID: <87y35rr52t.fsf@notabene.neil.brown.name> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable nfsd currently reports the NFSv4 dtpref FSINFO parameter to be PAGE_SIZE, so NFS clients will typically ask for one page of directory entries at a time. This is needlessly restrictive as nfsd can handle larger replies easily. Also, a READDIR request (but not a READDIRPLUS request) has the count size clipped to PAGE_SIE, again unnecessary. This patch lifts these limits so that larger readdir requests can be used. Signed-off-by: NeilBrown =2D-- fs/nfsd/nfs3proc.c | 2 +- fs/nfsd/nfs3xdr.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index c9cf46e0c040..8f933e84cec1 100644 =2D-- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -588,7 +588,7 @@ nfsd3_proc_fsinfo(struct svc_rqst *rqstp) resp->f_wtmax =3D max_blocksize; resp->f_wtpref =3D max_blocksize; resp->f_wtmult =3D PAGE_SIZE; =2D resp->f_dtpref =3D PAGE_SIZE; + resp->f_dtpref =3D max_blocksize; resp->f_maxfilesize =3D ~(u32) 0; resp->f_properties =3D NFS3_FSF_DEFAULT; =20 diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 83919116d5cb..93fea246f676 100644 =2D-- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -573,6 +573,8 @@ int nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_readdirargs *args =3D rqstp->rq_argp; + u32 max_blocksize =3D svc_max_payload(rqstp); + p =3D decode_fh(p, &args->fh); if (!p) return 0; @@ -580,7 +582,7 @@ nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be= 32 *p) args->verf =3D p; p +=3D 2; args->dircount =3D ~0; args->count =3D ntohl(*p++); =2D args->count =3D min_t(u32, args->count, PAGE_SIZE); + args->count =3D min_t(u32, args->count, max_blocksize); args->buffer =3D page_address(*(rqstp->rq_next_page++)); =20 return xdr_argsize_check(rqstp, p); =2D-=20 2.14.0.rc0.dirty --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEG8Yp69OQ2HB7X0l6Oeye3VZigbkFAlyATosACgkQOeye3VZi gbnWvBAAwnMdpmf4PvM1cimIjSJhHQFC5W5eZD6C+8dy6savgpoCaidOPxi1hHXm RMNETiyQKfffsOoI1gvqLWNpT0NtMTI0KGu47D66Bub0inV33jdSUI4qu7F24DJt JKjHQwtw7ON0xLWYzTqwAEQRD2bpxG1qphNUOQ/0NwQUzJkmH6jtoPIyjCylzXrj KwIh4pHSxwH5i82QYGIM7QIGwYftBBLvQYCGwW6EbVgpJ2X4tocmWWnMo90+qfa/ l4Gd5faFgkpy5qFvS7arvyg7wS/c5naAMOJnt+8mAL6aNvPT434vWqwyYWP/2IyV oIMv3Q2numhsb2ugfeMq41fC6LgbzQ9MGJv9+rAmQ6rcl4FdvDrajpHenZJmn3Mh NekKz+jEabB4F/8pCzId12ObTWZxqIqLpGLkBvrckQBlKSHDUfZPqSiUfvoSivJi uOe0GrZIVpnCCbAj0uJHe+Yj2Y9uz4/TJ5KhVQl8RJ21QziNE1Fq/ZcJsmiufjsr 1piAgKWi42v9YEibzGiPEH9Cmqh/GuD/64iajnbO4edm5rjM5Rd1TppPFr/CHswq 8Gt8L8G+/Y2XNFDvWz+TPry7el9Iu18P7DJ8arqKUT8oGH8wSUCq668SbV+/Lish yfbkJ8RC+qPJxoeahM3VZSS665NZsqfH7xWJdze+d2ApQOWzXnI= =/k3D -----END PGP SIGNATURE----- --=-=-=--