Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3328663pxb; Mon, 1 Mar 2021 07:22:28 -0800 (PST) X-Google-Smtp-Source: ABdhPJzhxJ4lhLtSi6W9L44+omBSHUBNT6uzu45sg6qzdDkoQ/+CJ1PTaZkiinOmr2iXfjYvIbpd X-Received: by 2002:a17:906:b286:: with SMTP id q6mr16333274ejz.422.1614612148481; Mon, 01 Mar 2021 07:22:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614612148; cv=none; d=google.com; s=arc-20160816; b=R/V8urAx1I8YVaaCAbcxQtdw98S3gK8HscP+5l0a+fZxMtjqv6vM/2dJ90i9cd5Sm4 +/FZ0/48GyT1YNQTS7EOIKl9GFnxQQ05TveVhuVHIi9e2DckWTVfqSpm1fpJbPPNnQr8 bwmOwMuwCj7Br43Ad1rE/p/E42/NVv/df8T67yEfPk9D/YIljb59AISfnxAhIAaHaiOy 9KwhhNAQj9Bz7EkQLCB9SLt6eAA3LLCEHnCyhx5od9effPPniYrxK0wZJSYSanUMF/hy WLbGOElJrIcIOwAUM9ZtGkOMwjtPc6cuJnCmks247s7fHuMeUkb/SXsUyIHhSBEXCC6b xkmw== 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:references:in-reply-to:message-id:date:to:from:subject; bh=alI197UvUlqS9N0DATHtopzWMZGwMpGgXOCw2QxwHG4=; b=rjqp4AJ7tW5U02VhiNI69Bs3o4r3rXta+TUpXtm1VcMyQkaR90eG3xdPj7Db7itaFY 7x3TZCaeJoz3PcK1ZLeQJtesp83X8CsHbJtv0JWpSSqkRtYs1gb61pVuvtuGTZIkk36N iev7m2ccCEEJwsn22XgQMZWM5+AX2s/y21IW8f4xhXHrDyIJjedij03LOw8MRr5PRrL6 fuFNq1TOyumyguA5v4/bNG2TBt7TKYncWbONwBUouIj6vYTSCn08ySZbXFalKC2lV8Gj wJF/SP6kvQ005cS9qaFdJ2eZqs8gdRa6hkLg7fcIZeNYs6O3zP1KGtBwh41IrlGhgBRd Mt6g== 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 fx8si9124568ejb.481.2021.03.01.07.22.05; Mon, 01 Mar 2021 07:22:28 -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 S237159AbhCAPTK (ORCPT + 99 others); Mon, 1 Mar 2021 10:19:10 -0500 Received: from mail.kernel.org ([198.145.29.99]:41284 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236994AbhCAPSy (ORCPT ); Mon, 1 Mar 2021 10:18:54 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2A22E64E31 for ; Mon, 1 Mar 2021 15:18:14 +0000 (UTC) Subject: [PATCH v1 29/42] NFSD: Add a helper that encodes NFSv3 directory offset cookies From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Mon, 01 Mar 2021 10:18:13 -0500 Message-ID: <161461189318.8508.3990059352774568611.stgit@klimt.1015granger.net> In-Reply-To: <161461145466.8508.13379815439337754427.stgit@klimt.1015granger.net> References: <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 Refactor: Add helper function similar to nfs3svc_encode_cookie3(). Signed-off-by: Chuck Lever --- fs/nfsd/nfsproc.c | 3 +-- fs/nfsd/nfsxdr.c | 18 ++++++++++++++++-- fs/nfsd/xdr.h | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 2088bb0887ba..5a0dd6e23c85 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -595,8 +595,7 @@ nfsd_proc_readdir(struct svc_rqst *rqstp) &resp->common, nfssvc_encode_entry); resp->count = resp->buffer - buffer; - if (resp->offset) - *resp->offset = htonl(offset); + nfssvc_encode_nfscookie(resp, offset); fh_put(&argp->fh); return rpc_success; diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 39d296aecd3e..a87b21cfe0d0 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -614,6 +614,21 @@ nfssvc_encode_statfsres(struct svc_rqst *rqstp, __be32 *p) return 1; } +/** + * nfssvc_encode_nfscookie - Encode a directory offset cookie + * @resp: readdir result context + * @offset: offset cookie to encode + * + */ +void nfssvc_encode_nfscookie(struct nfsd_readdirres *resp, u32 offset) +{ + if (!resp->offset) + return; + + *resp->offset = cpu_to_be32(offset); + resp->offset = NULL; +} + int nfssvc_encode_entry(void *ccdv, const char *name, int namlen, loff_t offset, u64 ino, unsigned int d_type) @@ -632,8 +647,7 @@ nfssvc_encode_entry(void *ccdv, const char *name, cd->common.err = nfserr_fbig; return -EINVAL; } - if (cd->offset) - *cd->offset = htonl(offset); + nfssvc_encode_nfscookie(cd, offset); /* truncate filename */ namlen = min(namlen, NFS2_MAXNAMLEN); diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index 277b74c511ce..651de13e62fe 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -157,6 +157,7 @@ int nfssvc_encode_readres(struct svc_rqst *, __be32 *); int nfssvc_encode_statfsres(struct svc_rqst *, __be32 *); int nfssvc_encode_readdirres(struct svc_rqst *, __be32 *); +void nfssvc_encode_nfscookie(struct nfsd_readdirres *resp, u32 offset); int nfssvc_encode_entry(void *, const char *name, int namlen, loff_t offset, u64 ino, unsigned int);