]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xprtrdma: Avoid 250 ms delay on backlog wakeup
authorChuck Lever <chuck.lever@oracle.com>
Fri, 6 Mar 2026 21:56:23 +0000 (16:56 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 13 Apr 2026 18:52:54 +0000 (11:52 -0700)
Commit a721035477fb ("SUNRPC/xprt: async tasks mustn't block waiting
for memory") changed xprt_rdma_alloc_slot() to set tk_status to
-ENOMEM so that call_reserveresult() would sleep HZ/4 before
retrying.  That rationale applies to xprt_dynamic_alloc_slot(),
where an immediate retry under memory pressure wastes CPU, but not
to the RDMA backlog path: a task woken from the backlog has a slot
waiting for it, so the 250 ms rpc_delay adds latency without
benefit.

This also aligns the code with the existing kernel-doc for
xprt_rdma_alloc_slot(), which already documented %-EAGAIN.

Fixes: a721035477fb ("SUNRPC/xprt: async tasks mustn't block waiting for memory")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/xprtrdma/transport.c

index 9a8ce5df83cad99916593f26b76dd3a01f0667b8..ca079439f9cceb39f2b490dc9c89d99fc7fbdfd7 100644 (file)
@@ -510,7 +510,7 @@ xprt_rdma_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task)
        return;
 
 out_sleep:
-       task->tk_status = -ENOMEM;
+       task->tk_status = -EAGAIN;
        xprt_add_backlog(xprt, task);
 }