OSDN Git Service

svcrdma: Normalize Send page handling
authorChuck Lever <chuck.lever@oracle.com>
Wed, 13 Jan 2021 18:57:18 +0000 (13:57 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 22 Mar 2021 17:22:13 +0000 (13:22 -0400)
commit2a1e4f21d84184f7ff5768ee3d3d0c30b1135867
treec87db194a3c60d96538d11b25971243213c955d6
parente844d307d46cfa7e09cdb671941bfd5f1be86773
svcrdma: Normalize Send page handling

Currently svc_rdma_sendto() migrates xdr_buf pages into a separate
page list and NULLs out a bunch of entries in rq_pages while the
pages are under I/O. The Send completion handler then frees those
pages later.

Instead, let's wait for the Send completion, then handle page
releasing in the nfsd thread. I'd like to avoid the cost of 250+
put_page() calls in the Send completion handler, which is single-
threaded.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
include/linux/sunrpc/svc_rdma.h
net/sunrpc/xprtrdma/svc_rdma_backchannel.c
net/sunrpc/xprtrdma/svc_rdma_sendto.c