sunrpc: eliminate the XPT_DETACHED flag
Subsystems (3)
PATCH 1/1 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(-)
include/linux/sunrpc/svc_xprt.h +3 -4
@@ -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 */
net/sunrpc/svc_xprt.c +1 -3
@@ -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--;
Signature · 1 line
2.1.0
Quoted 4 lines · Jeff Layton
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_initand it's always set and checked under thesv_lockanyway.
Applying for 3.19, thanks.--b.
Quoted 49 lines
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(-)include/linux/sunrpc/svc_xprt.h +3
-4@@ -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 */ net/sunrpc/svc_xprt.c +1
-3@@ -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--;Signature · 1 line
2.1.0