diff options
author | 2017-08-23 17:05:58 -0400 | |
---|---|---|
committer | 2017-09-05 18:27:07 -0400 | |
commit | 9590d083c1bb1419b7992609d1a0a3e3517d3893 (patch) | |
tree | ed285e1635c2232d66d432835fc13890ef209718 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | Merge tag 'nfs-rdma-for-4.14-1' of git://git.linux-nfs.org/projects/anna/linux-nfs into linux-next (diff) | |
download | wireguard-linux-9590d083c1bb1419b7992609d1a0a3e3517d3893.tar.xz wireguard-linux-9590d083c1bb1419b7992609d1a0a3e3517d3893.zip |
xprtrdma: Use xprt_pin_rqst in rpcrdma_reply_handler
Adopt the use of xprt_pin_rqst to eliminate contention between
Call-side users of rb_lock and the use of rb_lock in
rpcrdma_reply_handler.
This replaces the mechanism introduced in 431af645cf66 ("xprtrdma:
Fix client lock-up after application signal fires").
Use recv_lock to quickly find the completing rqst, pin it, then
drop the lock. At that point invalidation and pull-up of the Reply
XDR can be done. Both are often expensive operations.
Finally, take recv_lock again to signal completion to the RPC
layer. It also protects adjustment of "cwnd".
This greatly reduces the amount of time a lock is held by the
reply handler. Comparing lock_stat results shows a marked decrease
in contention on rb_lock and recv_lock.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
[trond.myklebust@primarydata.com: Remove call to rpcrdma_buffer_put() from
the "out_norqst:" path in rpcrdma_reply_handler.]
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions