2014-11-17 22:03:03

by Jeff Layton

[permalink] [raw]
Subject: [PATCH] sunrpc: eliminate the XPT_DETACHED flag

All it does is indicate whether a xprt has already been deleted from
a list or not, which is unnecessary since we use list_del_init and it's
always set and checked under the sv_lock anyway.

Signed-off-by: Jeff Layton <[email protected]>
---
include/linux/sunrpc/svc_xprt.h | 7 +++----
net/sunrpc/svc_xprt.c | 4 +---
2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h
index ce6e4182a5b2..79f6f8f3dc0a 100644
--- a/include/linux/sunrpc/svc_xprt.h
+++ b/include/linux/sunrpc/svc_xprt.h
@@ -63,10 +63,9 @@ struct svc_xprt {
#define XPT_CHNGBUF 7 /* need to change snd/rcv buf sizes */
#define XPT_DEFERRED 8 /* deferred request pending */
#define XPT_OLD 9 /* used for xprt aging mark+sweep */
-#define XPT_DETACHED 10 /* detached from tempsocks list */
-#define XPT_LISTENER 11 /* listening endpoint */
-#define XPT_CACHE_AUTH 12 /* cache auth info */
-#define XPT_LOCAL 13 /* connection from loopback interface */
+#define XPT_LISTENER 10 /* listening endpoint */
+#define XPT_CACHE_AUTH 11 /* cache auth info */
+#define XPT_LOCAL 12 /* connection from loopback interface */

struct svc_serv *xpt_server; /* service for transport */
atomic_t xpt_reserved; /* space on outq that is rsvd */
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index bbb3b044b877..5c71ccb9659d 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -895,7 +895,6 @@ static void svc_age_temp_xprts(unsigned long closure)
continue;
list_del_init(le);
set_bit(XPT_CLOSE, &xprt->xpt_flags);
- set_bit(XPT_DETACHED, &xprt->xpt_flags);
dprintk("queuing xprt %p for closing\n", xprt);

/* a thread will dequeue and close it soon */
@@ -935,8 +934,7 @@ static void svc_delete_xprt(struct svc_xprt *xprt)
xprt->xpt_ops->xpo_detach(xprt);

spin_lock_bh(&serv->sv_lock);
- if (!test_and_set_bit(XPT_DETACHED, &xprt->xpt_flags))
- list_del_init(&xprt->xpt_list);
+ list_del_init(&xprt->xpt_list);
WARN_ON_ONCE(!list_empty(&xprt->xpt_ready));
if (test_bit(XPT_TEMP, &xprt->xpt_flags))
serv->sv_tmpcnt--;
--
2.1.0



2014-11-19 20:51:49

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH] sunrpc: eliminate the XPT_DETACHED flag

On Mon, Nov 17, 2014 at 05:02:57PM -0500, Jeff Layton wrote:
> All it does is indicate whether a xprt has already been deleted from
> a list or not, which is unnecessary since we use list_del_init and it's
> always set and checked under the sv_lock anyway.
>

Applying for 3.19, thanks.--b.

> Signed-off-by: Jeff Layton <[email protected]>
> ---
> include/linux/sunrpc/svc_xprt.h | 7 +++----
> net/sunrpc/svc_xprt.c | 4 +---
> 2 files changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h
> index ce6e4182a5b2..79f6f8f3dc0a 100644
> --- a/include/linux/sunrpc/svc_xprt.h
> +++ b/include/linux/sunrpc/svc_xprt.h
> @@ -63,10 +63,9 @@ struct svc_xprt {
> #define XPT_CHNGBUF 7 /* need to change snd/rcv buf sizes */
> #define XPT_DEFERRED 8 /* deferred request pending */
> #define XPT_OLD 9 /* used for xprt aging mark+sweep */
> -#define XPT_DETACHED 10 /* detached from tempsocks list */
> -#define XPT_LISTENER 11 /* listening endpoint */
> -#define XPT_CACHE_AUTH 12 /* cache auth info */
> -#define XPT_LOCAL 13 /* connection from loopback interface */
> +#define XPT_LISTENER 10 /* listening endpoint */
> +#define XPT_CACHE_AUTH 11 /* cache auth info */
> +#define XPT_LOCAL 12 /* connection from loopback interface */
>
> struct svc_serv *xpt_server; /* service for transport */
> atomic_t xpt_reserved; /* space on outq that is rsvd */
> diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
> index bbb3b044b877..5c71ccb9659d 100644
> --- a/net/sunrpc/svc_xprt.c
> +++ b/net/sunrpc/svc_xprt.c
> @@ -895,7 +895,6 @@ static void svc_age_temp_xprts(unsigned long closure)
> continue;
> list_del_init(le);
> set_bit(XPT_CLOSE, &xprt->xpt_flags);
> - set_bit(XPT_DETACHED, &xprt->xpt_flags);
> dprintk("queuing xprt %p for closing\n", xprt);
>
> /* a thread will dequeue and close it soon */
> @@ -935,8 +934,7 @@ static void svc_delete_xprt(struct svc_xprt *xprt)
> xprt->xpt_ops->xpo_detach(xprt);
>
> spin_lock_bh(&serv->sv_lock);
> - if (!test_and_set_bit(XPT_DETACHED, &xprt->xpt_flags))
> - list_del_init(&xprt->xpt_list);
> + list_del_init(&xprt->xpt_list);
> WARN_ON_ONCE(!list_empty(&xprt->xpt_ready));
> if (test_bit(XPT_TEMP, &xprt->xpt_flags))
> serv->sv_tmpcnt--;
> --
> 2.1.0
>