All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: bfields@fieldses.org
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH 21/29] lockd: Update the NLMv4 UNLOCK arguments decoder to use struct xdr_stream
Date: Thu, 03 Jun 2021 16:52:40 -0400	[thread overview]
Message-ID: <162275356080.32691.5264466318504221792.stgit@klimt.1015granger.net> (raw)
In-Reply-To: <162275337584.32691.3943139351165347555.stgit@klimt.1015granger.net>

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 fs/lockd/xdr4.c |   53 +++++++++++++----------------------------------------
 1 file changed, 13 insertions(+), 40 deletions(-)

diff --git a/fs/lockd/xdr4.c b/fs/lockd/xdr4.c
index 37d45f1d7199..47a87ea4a99b 100644
--- a/fs/lockd/xdr4.c
+++ b/fs/lockd/xdr4.c
@@ -131,36 +131,6 @@ nlm4_decode_oh(__be32 *p, struct xdr_netobj *oh)
 	return xdr_decode_netobj(p, oh);
 }
 
-static __be32 *
-nlm4_decode_lock(__be32 *p, struct nlm_lock *lock)
-{
-	struct file_lock	*fl = &lock->fl;
-	__u64			len, start;
-	__s64			end;
-
-	if (!(p = xdr_decode_string_inplace(p, &lock->caller,
-					    &lock->len, NLM_MAXSTRLEN))
-	 || !(p = nlm4_decode_fh(p, &lock->fh))
-	 || !(p = nlm4_decode_oh(p, &lock->oh)))
-		return NULL;
-	lock->svid  = ntohl(*p++);
-
-	locks_init_lock(fl);
-	fl->fl_flags = FL_POSIX;
-	fl->fl_type  = F_RDLCK;		/* as good as anything else */
-	p = xdr_decode_hyper(p, &start);
-	p = xdr_decode_hyper(p, &len);
-	end = start + len - 1;
-
-	fl->fl_start = s64_to_loff_t(start);
-
-	if (len == 0 || end < 0)
-		fl->fl_end = OFFSET_MAX;
-	else
-		fl->fl_end = s64_to_loff_t(end);
-	return p;
-}
-
 static bool
 svcxdr_decode_lock(struct xdr_stream *xdr, struct nlm_lock *lock)
 {
@@ -311,25 +281,28 @@ nlm4svc_decode_cancargs(struct svc_rqst *rqstp, __be32 *p)
 }
 
 int
-nlm4svc_encode_testres(struct svc_rqst *rqstp, __be32 *p)
+nlm4svc_decode_unlockargs(struct svc_rqst *rqstp, __be32 *p)
 {
-	struct nlm_res *resp = rqstp->rq_resp;
+	struct xdr_stream *xdr = &rqstp->rq_arg_stream;
+	struct nlm_args *argp = rqstp->rq_argp;
 
-	if (!(p = nlm4_encode_testres(p, resp)))
+	if (!svcxdr_decode_cookie(xdr, &argp->cookie))
 		return 0;
-	return xdr_ressize_check(rqstp, p);
+	if (!svcxdr_decode_lock(xdr, &argp->lock))
+		return 0;
+	argp->lock.fl.fl_type = F_UNLCK;
+
+	return 1;
 }
 
 int
-nlm4svc_decode_unlockargs(struct svc_rqst *rqstp, __be32 *p)
+nlm4svc_encode_testres(struct svc_rqst *rqstp, __be32 *p)
 {
-	struct nlm_args *argp = rqstp->rq_argp;
+	struct nlm_res *resp = rqstp->rq_resp;
 
-	if (!(p = nlm4_decode_cookie(p, &argp->cookie))
-	 || !(p = nlm4_decode_lock(p, &argp->lock)))
+	if (!(p = nlm4_encode_testres(p, resp)))
 		return 0;
-	argp->lock.fl.fl_type = F_UNLCK;
-	return xdr_argsize_check(rqstp, p);
+	return xdr_ressize_check(rqstp, p);
 }
 
 int



  parent reply	other threads:[~2021-06-03 20:52 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-03 20:50 [PATCH 00/29] XDR overhaul for server-side lockd Chuck Lever
2021-06-03 20:50 ` [PATCH 01/29] lockd: Remove stale comments Chuck Lever
2021-06-03 20:50 ` [PATCH 02/29] lockd: Create a simplified .vs_dispatch method for NLM requests Chuck Lever
2021-06-03 20:50 ` [PATCH 03/29] lockd: Common NLM XDR helpers Chuck Lever
2021-06-03 20:50 ` [PATCH 04/29] lockd: Update the NLMv1 void argument decoder to use struct xdr_stream Chuck Lever
2021-06-03 20:51 ` [PATCH 05/29] lockd: Update the NLMv1 TEST arguments " Chuck Lever
2021-06-03 20:51 ` [PATCH 06/29] lockd: Update the NLMv1 LOCK " Chuck Lever
2021-06-03 20:51 ` [PATCH 07/29] lockd: Update the NLMv1 CANCEL " Chuck Lever
2021-06-03 20:51 ` [PATCH 08/29] lockd: Update the NLMv1 UNLOCK " Chuck Lever
2021-06-03 20:51 ` [PATCH 09/29] lockd: Update the NLMv1 nlm_res " Chuck Lever
2021-06-03 20:51 ` [PATCH 10/29] lockd: Update the NLMv1 SM_NOTIFY " Chuck Lever
2021-06-03 20:51 ` [PATCH 11/29] lockd: Update the NLMv1 SHARE " Chuck Lever
2021-06-03 20:51 ` [PATCH 12/29] lockd: Update the NLMv1 FREE_ALL " Chuck Lever
2021-06-03 20:51 ` [PATCH 13/29] lockd: Update the NLMv1 void results encoder " Chuck Lever
2021-06-03 20:51 ` [PATCH 14/29] lockd: Update the NLMv1 TEST " Chuck Lever
2021-06-03 20:52 ` [PATCH 15/29] lockd: Update the NLMv1 nlm_res " Chuck Lever
2021-06-03 20:52 ` [PATCH 16/29] lockd: Update the NLMv1 SHARE " Chuck Lever
2021-06-03 20:52 ` [PATCH 17/29] lockd: Update the NLMv4 void arguments decoder " Chuck Lever
2021-06-03 20:52 ` [PATCH 18/29] lockd: Update the NLMv4 TEST " Chuck Lever
2021-06-03 20:52 ` [PATCH 19/29] lockd: Update the NLMv4 LOCK " Chuck Lever
2021-06-03 20:52 ` [PATCH 20/29] lockd: Update the NLMv4 CANCEL " Chuck Lever
2021-06-03 20:52 ` Chuck Lever [this message]
2021-06-03 20:52 ` [PATCH 22/29] lockd: Update the NLMv4 nlm_res " Chuck Lever
2021-06-03 20:52 ` [PATCH 23/29] lockd: Update the NLMv4 SM_NOTIFY " Chuck Lever
2021-06-03 20:52 ` [PATCH 24/29] lockd: Update the NLMv4 SHARE " Chuck Lever
2021-06-03 20:53 ` [PATCH 25/29] lockd: Update the NLMv4 FREE_ALL " Chuck Lever
2021-06-03 20:53 ` [PATCH 26/29] lockd: Update the NLMv4 void results encoder " Chuck Lever
2021-06-03 20:53 ` [PATCH 27/29] lockd: Update the NLMv4 TEST " Chuck Lever
2021-06-03 20:53 ` [PATCH 28/29] lockd: Update the NLMv4 nlm_res " Chuck Lever
2021-06-03 20:53 ` [PATCH 29/29] lockd: Update the NLMv4 SHARE " Chuck Lever
2021-06-16 14:53 ` [PATCH 00/29] XDR overhaul for server-side lockd J. Bruce Fields

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=162275356080.32691.5264466318504221792.stgit@klimt.1015granger.net \
    --to=chuck.lever@oracle.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.