Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3325477pxb; Mon, 1 Mar 2021 07:18:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJz3M5qaDFEoko8vLeraOeQcjKfM28WsU5cIBWLUcw+j/hbpo/NV7y+TnihAUWrFl0jhYjoL X-Received: by 2002:a05:6402:1455:: with SMTP id d21mr16479651edx.192.1614611900458; Mon, 01 Mar 2021 07:18:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614611900; cv=none; d=google.com; s=arc-20160816; b=NrvDtEQ4uLr6OoHpWw7FTUQlS7P7gzjFvZ04BvrvId07dGXxH8iEFrEh9vGMirmk3W 2/Df2SR5ihek3+uKEfnFRdyWfAT0HHCTJdbSceg0Vcfq4+x12qGOFUUN1mdW+WSuwF7G uQ+dNoeghfazj6FOfrlABf51lyW7+2d9ZPH5Lag+mhU4jW+LW8sFuj06GSnOnnrDGlAC ZXhwu+X7f/NqzIXn3x0hKwxXR8nm8/1kG51M0OWZwKR2tuYzNg8GpRZcsukSqffWKSKp v1UNEk7uUtJu1uHo7hZHZ4N6jgd+3i5XsAh22iB7G9l46ObX1B9B11QGruQlDSsNMZKe lAlQ== 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 :user-agent:message-id:date:to:from:subject; bh=/LnsY+L7yhjcv3YXf4ZvCxqPVDryiJi8OlzsAOASvOs=; b=yFiREKm4IyAKl3b9i8VUDXyB/YgsRPUlX1394wBozUSFYX7HYCpWva9Te5WbhPwQgn nm8yAgtP+4nJSdpvm192vdLcDCJSK+CnyEJwo58BnAwQCuj5HlWdMX0k1mrNozO03GB4 kMzOKLGxF4GW96VcPvNHrUeka8RvIVEPusc6V0WBQkypYFTbp79S8YyCYb729YvMP5MX zpKRERaC/8zLnamOx4HHa8wy3su35vyPdbdzZRhZf/PgX2K5dpf4ity4mfo/rcKbBpdc H6QvUkDvLtvawkRHhLoIQRlR7877cvevMSHQzT5pr4O7IHBf8Ahe2z9eTHqkC4kir/6t LCVQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q18si10796688ejm.178.2021.03.01.07.17.56; Mon, 01 Mar 2021 07:18:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237073AbhCAPQc (ORCPT + 99 others); Mon, 1 Mar 2021 10:16:32 -0500 Received: from mail.kernel.org ([198.145.29.99]:40196 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236841AbhCAPP7 (ORCPT ); Mon, 1 Mar 2021 10:15:59 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 37801600CC for ; Mon, 1 Mar 2021 15:15:19 +0000 (UTC) Subject: [PATCH v1 00/42] NFSv2/3 XDR encoder overhaul From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Mon, 01 Mar 2021 10:15:18 -0500 Message-ID: <161461145466.8508.13379815439337754427.stgit@klimt.1015granger.net> User-Agent: StGit/1.0-5-g755c MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Hi- This patch series updates the server-side XDR encoder functions for NFS versions 2 and 3. The series was available on both test servers I maintained at last week's virtual bake-a-thon event. I expect that the only controversial part of the series is the changes to NFSv3 READDIR and the per-entry encoders. If the reader has no time for anything else, please have a close look at those. The series is also available in the for-next topic branch here: git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git --- Chuck Lever (42): NFSD: Extract the svcxdr_init_encode() helper NFSD: Update the GETATTR3res encoder to use struct xdr_stream NFSD: Update the NFSv3 ACCESS3res encoder to use struct xdr_stream NFSD: Update the NFSv3 LOOKUP3res encoder to use struct xdr_stream NFSD: Update the NFSv3 wccstat result encoder to use struct xdr_stream NFSD: Update the NFSv3 READLINK3res encoder to use struct xdr_stream NFSD: Update the NFSv3 READ3res encode to use struct xdr_stream NFSD: Update the NFSv3 WRITE3res encoder to use struct xdr_stream NFSD: Update the NFSv3 CREATE family of encoders to use struct xdr_stream NFSD: Update the NFSv3 RENAMEv3res encoder to use struct xdr_stream NFSD: Update the NFSv3 LINK3res encoder to use struct xdr_stream NFSD: Update the NFSv3 FSSTAT3res encoder to use struct xdr_stream NFSD: Update the NFSv3 FSINFO3res encoder to use struct xdr_stream NFSD: Update the NFSv3 PATHCONF3res encoder to use struct xdr_stream NFSD: Update the NFSv3 COMMIT3res encoder to use struct xdr_stream NFSD: Add a helper that encodes NFSv3 directory offset cookies NFSD: Count bytes instead of pages in the NFSv3 READDIR encoder NFSD: Update the NFSv3 READDIR3res encoder to use struct xdr_stream SUNRPC: Fix xdr_get_next_encode_buffer() page boundary handling NFSD: Update NFSv3 READDIR entry encoders to use struct xdr_stream NFSD: Remove unused NFSv3 directory entry encoders NFSD: Reduce svc_rqst::rq_pages churn during READDIR operations NFSD: Update the NFSv2 stat encoder to use struct xdr_stream NFSD: Update the NFSv2 attrstat encoder to use struct xdr_stream NFSD: Update the NFSv2 diropres encoder to use struct xdr_stream NFSD: Update the NFSv2 READLINK result encoder to use struct xdr_stream NFSD: Update the NFSv2 READ result encoder to use struct xdr_stream NFSD: Update the NFSv2 STATFS result encoder to use struct xdr_stream NFSD: Add a helper that encodes NFSv3 directory offset cookies NFSD: Count bytes instead of pages in the NFSv2 READDIR encoder NFSD: Update the NFSv2 READDIR result encoder to use struct xdr_stream NFSD: Update the NFSv2 READDIR entry encoder to use struct xdr_stream NFSD: Remove unused NFSv2 directory entry encoders NFSD: Add an xdr_stream-based encoder for NFSv2/3 ACLs NFSD: Update the NFSv2 GETACL result encoder to use struct xdr_stream NFSD: Update the NFSv2 SETACL result encoder to use struct xdr_stream NFSD: Update the NFSv2 ACL GETATTR result encoder to use struct xdr_stream NFSD: Update the NFSv2 ACL ACCESS result encoder to use struct xdr_stream NFSD: Clean up after updating NFSv2 ACL encoders NFSD: Update the NFSv3 GETACL result encoder to use struct xdr_stream NFSD: Update the NFSv3 SETACL result encoder to use struct xdr_stream NFSD: Clean up after updating NFSv3 ACL encoders fs/nfs_common/nfsacl.c | 71 +++ fs/nfsd/nfs2acl.c | 87 ++- fs/nfsd/nfs3acl.c | 39 +- fs/nfsd/nfs3proc.c | 97 ++-- fs/nfsd/nfs3xdr.c | 1044 ++++++++++++++++++++++-------------- fs/nfsd/nfsfh.c | 2 +- fs/nfsd/nfsfh.h | 2 +- fs/nfsd/nfsproc.c | 53 +- fs/nfsd/nfsxdr.c | 411 ++++++++------ fs/nfsd/vfs.h | 2 +- fs/nfsd/xdr.h | 23 +- fs/nfsd/xdr3.h | 37 +- include/linux/nfsacl.h | 3 + include/linux/sunrpc/xdr.h | 20 + net/sunrpc/xdr.c | 2 +- 15 files changed, 1143 insertions(+), 750 deletions(-) -- Chuck Lever