From: Trond Myklebust <trondmy@hammerspace.com>
To: "anna.schumaker@netapp.com" <anna.schumaker@netapp.com>,
"chuck.lever@oracle.com" <chuck.lever@oracle.com>
Cc: "linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 2/4] SUNRPC: Widen rpc_task::tk_flags
Date: Fri, 22 Jul 2022 17:53:27 +0000 [thread overview]
Message-ID: <55155a8f566599ecf802103a8d7d3aa4ea3e421a.camel@hammerspace.com> (raw)
In-Reply-To: <165851073589.361126.4062184829827389945.stgit@morisot.1015granger.net>
On Fri, 2022-07-22 at 13:25 -0400, Chuck Lever wrote:
> There is just one unused bit left in rpc_task::tk_flags, and I will
> need two in subsequent patches. Double the width of the field to
> accommodate more flag bits.
The values 0x8 and 0x40 are both free, so I'm not seeing why this patch
is needed at this time.
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> Reviewed-by: Jeff Layton <jlayton@kernel.org>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> include/linux/sunrpc/clnt.h | 6 ++++--
> include/linux/sunrpc/sched.h | 32 ++++++++++++++++----------------
> net/sunrpc/clnt.c | 11 ++++++-----
> net/sunrpc/debugfs.c | 2 +-
> 4 files changed, 27 insertions(+), 24 deletions(-)
>
> diff --git a/include/linux/sunrpc/clnt.h
> b/include/linux/sunrpc/clnt.h
> index 90501404fa49..cbdd20dc84b7 100644
> --- a/include/linux/sunrpc/clnt.h
> +++ b/include/linux/sunrpc/clnt.h
> @@ -193,11 +193,13 @@ void rpc_prepare_reply_pages(struct rpc_rqst
> *req, struct page **pages,
> unsigned int hdrsize);
> void rpc_call_start(struct rpc_task *);
> int rpc_call_async(struct rpc_clnt *clnt,
> - const struct rpc_message *msg, int
> flags,
> + const struct rpc_message *msg,
> + unsigned int flags,
> const struct rpc_call_ops *tk_ops,
> void *calldata);
> int rpc_call_sync(struct rpc_clnt *clnt,
> - const struct rpc_message *msg, int
> flags);
> + const struct rpc_message *msg,
> + unsigned int flags);
> struct rpc_task *rpc_call_null(struct rpc_clnt *clnt, struct
> rpc_cred *cred,
> int flags);
> int rpc_restart_call_prepare(struct rpc_task *);
> diff --git a/include/linux/sunrpc/sched.h
> b/include/linux/sunrpc/sched.h
> index 1d7a3e51b795..d4b7ebd0a99c 100644
> --- a/include/linux/sunrpc/sched.h
> +++ b/include/linux/sunrpc/sched.h
> @@ -82,7 +82,7 @@ struct rpc_task {
> ktime_t tk_start; /* RPC task init
> timestamp */
>
> pid_t tk_owner; /* Process id for
> batching tasks */
> - unsigned short tk_flags; /* misc flags */
> + unsigned int tk_flags; /* misc flags */
> unsigned short tk_timeouts; /* maj timeouts */
>
> #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) ||
> IS_ENABLED(CONFIG_TRACEPOINTS)
> @@ -112,27 +112,27 @@ struct rpc_task_setup {
> const struct rpc_call_ops *callback_ops;
> void *callback_data;
> struct workqueue_struct *workqueue;
> - unsigned short flags;
> + unsigned int flags;
> signed char priority;
> };
>
> /*
> * RPC task flags
> */
> -#define RPC_TASK_ASYNC 0x0001 /* is an async task
> */
> -#define RPC_TASK_SWAPPER 0x0002 /* is swapping in/out
> */
> -#define RPC_TASK_MOVEABLE 0x0004 /* nfs4.1+ rpc tasks
> */
> -#define RPC_TASK_NULLCREDS 0x0010 /* Use AUTH_NULL
> credential */
> -#define RPC_CALL_MAJORSEEN 0x0020 /* major timeout seen
> */
> -#define RPC_TASK_DYNAMIC 0x0080 /* task was
> kmalloc'ed */
> -#define RPC_TASK_NO_ROUND_ROBIN 0x0100 /* send
> requests on "main" xprt */
> -#define RPC_TASK_SOFT 0x0200 /* Use soft timeouts
> */
> -#define RPC_TASK_SOFTCONN 0x0400 /* Fail if can't
> connect */
> -#define RPC_TASK_SENT 0x0800 /* message was sent
> */
> -#define RPC_TASK_TIMEOUT 0x1000 /* fail with
> ETIMEDOUT on timeout */
> -#define RPC_TASK_NOCONNECT 0x2000 /* return ENOTCONN if
> not connected */
> -#define RPC_TASK_NO_RETRANS_TIMEOUT 0x4000 /* wait
> forever for a reply */
> -#define RPC_TASK_CRED_NOREF 0x8000 /* No refcount on the
> credential */
> +#define RPC_TASK_ASYNC 0x00000001 /* is an
> async task */
> +#define RPC_TASK_SWAPPER 0x00000002 /* is
> swapping in/out */
> +#define RPC_TASK_MOVEABLE 0x00000004 /* nfs4.1+
> rpc tasks */
> +#define RPC_TASK_NULLCREDS 0x00000010 /* Use
> AUTH_NULL credential */
> +#define RPC_CALL_MAJORSEEN 0x00000020 /* major
> timeout seen */
> +#define RPC_TASK_DYNAMIC 0x00000080 /* task was
> kmalloc'ed */
> +#define RPC_TASK_NO_ROUND_ROBIN 0x00000100 /*
> send requests on "main" xprt */
> +#define RPC_TASK_SOFT 0x00000200 /* Use soft
> timeouts */
> +#define RPC_TASK_SOFTCONN 0x00000400 /* Fail if
> can't connect */
> +#define RPC_TASK_SENT 0x00000800 /* message
> was sent */
> +#define RPC_TASK_TIMEOUT 0x00001000 /* fail with
> ETIMEDOUT on timeout */
> +#define RPC_TASK_NOCONNECT 0x00002000 /* return
> ENOTCONN if not connected */
> +#define RPC_TASK_NO_RETRANS_TIMEOUT 0x00004000 /* wait
> forever for a reply */
> +#define RPC_TASK_CRED_NOREF 0x00008000 /* No
> refcount on the credential */
>
> #define RPC_IS_ASYNC(t) ((t)->tk_flags &
> RPC_TASK_ASYNC)
> #define RPC_IS_SWAPPER(t) ((t)->tk_flags & RPC_TASK_SWAPPER)
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index a97d4e06cae3..476caa4ebf5c 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -1162,7 +1162,8 @@ EXPORT_SYMBOL_GPL(rpc_run_task);
> * @msg: RPC call parameters
> * @flags: RPC call flags
> */
> -int rpc_call_sync(struct rpc_clnt *clnt, const struct rpc_message
> *msg, int flags)
> +int rpc_call_sync(struct rpc_clnt *clnt, const struct rpc_message
> *msg,
> + unsigned int flags)
> {
> struct rpc_task *task;
> struct rpc_task_setup task_setup_data = {
> @@ -1197,9 +1198,9 @@ EXPORT_SYMBOL_GPL(rpc_call_sync);
> * @tk_ops: RPC call ops
> * @data: user call data
> */
> -int
> -rpc_call_async(struct rpc_clnt *clnt, const struct rpc_message *msg,
> int flags,
> - const struct rpc_call_ops *tk_ops, void *data)
> +int rpc_call_async(struct rpc_clnt *clnt, const struct rpc_message
> *msg,
> + unsigned int flags, const struct rpc_call_ops
> *tk_ops,
> + void *data)
> {
> struct rpc_task *task;
> struct rpc_task_setup task_setup_data = {
> @@ -3080,7 +3081,7 @@ static void rpc_show_task(const struct rpc_clnt
> *clnt,
> if (RPC_IS_QUEUED(task))
> rpc_waitq = rpc_qname(task->tk_waitqueue);
>
> - printk(KERN_INFO "%5u %04x %6d %8p %8p %8ld %8p %sv%u %s
> a:%ps q:%s\n",
> + printk(KERN_INFO "%5u %08x %6d %8p %8p %8ld %8p %sv%u %s
> a:%ps q:%s\n",
> task->tk_pid, task->tk_flags, task->tk_status,
> clnt, task->tk_rqstp, rpc_task_timeout(task), task-
> >tk_ops,
> clnt->cl_program->name, clnt->cl_vers,
> rpc_proc_name(task),
> diff --git a/net/sunrpc/debugfs.c b/net/sunrpc/debugfs.c
> index 8df634e63f30..60f20be4e7e5 100644
> --- a/net/sunrpc/debugfs.c
> +++ b/net/sunrpc/debugfs.c
> @@ -30,7 +30,7 @@ tasks_show(struct seq_file *f, void *v)
> if (task->tk_rqstp)
> xid = be32_to_cpu(task->tk_rqstp->rq_xid);
>
> - seq_printf(f, "%5u %04x %6d 0x%x 0x%x %8ld %ps %sv%u %s a:%ps
> q:%s\n",
> + seq_printf(f, "%5u %08x %6d 0x%x 0x%x %8ld %ps %sv%u %s a:%ps
> q:%s\n",
> task->tk_pid, task->tk_flags, task->tk_status,
> clnt->cl_clid, xid, rpc_task_timeout(task), task-
> >tk_ops,
> clnt->cl_program->name, clnt->cl_vers,
> rpc_proc_name(task),
>
>
--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@hammerspace.com
next prev parent reply other threads:[~2022-07-22 17:53 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-22 17:25 [PATCH 0/4] Pre-requisites for client-side RPC-with-TLS support Chuck Lever
2022-07-22 17:25 ` [PATCH 1/4] SUNRPC: Fail faster on bad verifier Chuck Lever
2022-07-22 17:25 ` [PATCH 2/4] SUNRPC: Widen rpc_task::tk_flags Chuck Lever
2022-07-22 17:53 ` Trond Myklebust [this message]
2022-07-22 17:55 ` Chuck Lever III
2022-07-23 20:10 ` Trond Myklebust
2022-07-25 13:17 ` Chuck Lever III
2022-07-22 17:25 ` [PATCH 3/4] SUNRPC: Replace dprintk() call site in xs_data_ready Chuck Lever
2022-07-22 17:59 ` Trond Myklebust
2022-07-22 18:45 ` Chuck Lever III
2022-07-22 20:22 ` Steven Rostedt
2022-07-25 15:49 ` Arnaldo Carvalho de Melo
2022-07-25 16:06 ` Steven Rostedt
2022-07-22 17:25 ` [PATCH 4/4] NFS: Replace fs_context-related dprintk() call sites with tracepoints Chuck Lever
2022-07-22 18:00 ` Trond Myklebust
2022-07-22 19:05 ` Chuck Lever III
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=55155a8f566599ecf802103a8d7d3aa4ea3e421a.camel@hammerspace.com \
--to=trondmy@hammerspace.com \
--cc=anna.schumaker@netapp.com \
--cc=chuck.lever@oracle.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox