summaryrefslogtreecommitdiffstats
path: root/include/trace/events/rpcrdma.h
diff options
context:
space:
mode:
authorChuck Lever2018-05-04 21:35:57 +0200
committerAnna Schumaker2018-06-01 19:56:30 +0200
commit2fad659209d5b1dbaa1f58606372571c61fc8cbd (patch)
treecc0cdc1adb78753269485d4754f5182d989ef5c6 /include/trace/events/rpcrdma.h
parentxprtrdma: Move common wait_for_buffer_space call to parent function (diff)
downloadkernel-qcow2-linux-2fad659209d5b1dbaa1f58606372571c61fc8cbd.tar.gz
kernel-qcow2-linux-2fad659209d5b1dbaa1f58606372571c61fc8cbd.tar.xz
kernel-qcow2-linux-2fad659209d5b1dbaa1f58606372571c61fc8cbd.zip
xprtrdma: Wait on empty sendctx queue
Currently, when the sendctx queue is exhausted during marshaling, the RPC/RDMA transport places the RPC task on the delayq, which forces a wait for HZ >> 2 before the marshal and send is retried. With this change, the transport now places such an RPC task on the pending queue, and wakes it just as soon as more sendctxs become available. This typically takes less than a millisecond, and the write_space waking mechanism is less deadlock-prone. Moreover, the waiting RPC task is holding the transport's write lock, which blocks the transport from sending RPCs. Therefore faster recovery from sendctx queue exhaustion is desirable. Cf. commit 5804891455d5 ("xprtrdma: ->send_request returns -EAGAIN when there are no free MRs"). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'include/trace/events/rpcrdma.h')
0 files changed, 0 insertions, 0 deletions