aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/svc_xprt.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2016-11-14 11:29:48 -0500
committerIngo Molnar <mingo@kernel.org>2017-01-14 05:37:18 -0500
commit2c935bc57221cc2edc787c72ea0e2d30cdcd3d5e (patch)
tree4ccb975ac9142887b4e7e7bf1c0cca5c53d4cf99 /net/sunrpc/svc_xprt.c
parent1e24edca0557dba6486d39d3c24c288475432bcf (diff)
locking/atomic, kref: Add kref_read()
Since we need to change the implementation, stop exposing internals. Provide kref_read() to read the current reference count; typically used for debug messages. Kills two anti-patterns: atomic_read(&kref->refcount) kref->refcount.counter Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/sunrpc/svc_xprt.c')
-rw-r--r--net/sunrpc/svc_xprt.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index 3bc1d61694cb..04e7f8707d71 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -490,7 +490,7 @@ static struct svc_xprt *svc_xprt_dequeue(struct svc_pool *pool)
490 svc_xprt_get(xprt); 490 svc_xprt_get(xprt);
491 491
492 dprintk("svc: transport %p dequeued, inuse=%d\n", 492 dprintk("svc: transport %p dequeued, inuse=%d\n",
493 xprt, atomic_read(&xprt->xpt_ref.refcount)); 493 xprt, kref_read(&xprt->xpt_ref));
494 } 494 }
495 spin_unlock_bh(&pool->sp_lock); 495 spin_unlock_bh(&pool->sp_lock);
496out: 496out:
@@ -820,7 +820,7 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt)
820 /* XPT_DATA|XPT_DEFERRED case: */ 820 /* XPT_DATA|XPT_DEFERRED case: */
821 dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n", 821 dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n",
822 rqstp, rqstp->rq_pool->sp_id, xprt, 822 rqstp, rqstp->rq_pool->sp_id, xprt,
823 atomic_read(&xprt->xpt_ref.refcount)); 823 kref_read(&xprt->xpt_ref));
824 rqstp->rq_deferred = svc_deferred_dequeue(xprt); 824 rqstp->rq_deferred = svc_deferred_dequeue(xprt);
825 if (rqstp->rq_deferred) 825 if (rqstp->rq_deferred)
826 len = svc_deferred_recv(rqstp); 826 len = svc_deferred_recv(rqstp);
@@ -978,7 +978,7 @@ static void svc_age_temp_xprts(unsigned long closure)
978 * through, close it. */ 978 * through, close it. */
979 if (!test_and_set_bit(XPT_OLD, &xprt->xpt_flags)) 979 if (!test_and_set_bit(XPT_OLD, &xprt->xpt_flags))
980 continue; 980 continue;
981 if (atomic_read(&xprt->xpt_ref.refcount) > 1 || 981 if (kref_read(&xprt->xpt_ref) > 1 ||
982 test_bit(XPT_BUSY, &xprt->xpt_flags)) 982 test_bit(XPT_BUSY, &xprt->xpt_flags))
983 continue; 983 continue;
984 list_del_init(le); 984 list_del_init(le);