diff options
author | Peter Zijlstra <peterz@infradead.org> | 2016-11-14 11:29:48 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-01-14 05:37:18 -0500 |
commit | 2c935bc57221cc2edc787c72ea0e2d30cdcd3d5e (patch) | |
tree | 4ccb975ac9142887b4e7e7bf1c0cca5c53d4cf99 /net/sunrpc/svc_xprt.c | |
parent | 1e24edca0557dba6486d39d3c24c288475432bcf (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.c | 6 |
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); |
496 | out: | 496 | out: |
@@ -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); |