svc_rdma_process_read_list(9)
π svc_rdma_process_read_list(9) β like, the Kernel API Manual, bestie β¨
okay so picture this: it's a (9) manpage, it lives in the Kernel API Manual, and it's literally about pulling a whole list of Read chunks off the client π«Ά
πΈ NAME πΈ
svc_rdma_process_read_list β pulls the entire list of Read chunks from the client, all at once, no cap π
β¨ SYNOPSIS β¨
int svc_rdma_process_read_list (struct svcxprt_rdma *rdma , struct
svc_rqst *rqstp , struct svc_rdma_recv_ctxt *head );
like yes, that's the whole signature, she's iconic π
π ARGUMENTS π
rdmaβ the controlling RDMA transport, aka the main character driving this whole situation πrqstpβ the set of pages we're gonna use as Read sink buffers, so like, the place the good stuff lands π«headβ the pages under I/O collect here, it's the lil gathering spot πΈ
π¦ DESCRIPTION π¦
So here's the vibe: the RPC/RDMA protocol assumes that the upper layer's XDR decoders pull each Read chunk as they decode an incoming RPC message. That's just the assumption, that's canon, iykyk.
But on Linux? lowkey different story. The server needs a fully-constructed RPC message sitting in rqstp->rq_arg whenever there's a positive return code from ->xpo_recvfrom. So the Read list gets safety-checked immediately when it's received β responsible queen behavior π
β and then, right here, the whole Read list is pulled all at once. The ingress RPC message is fully reconstructed once all the associated RDMA Reads have completed. periodt β¨
π€ and yes bestie, "all at once" is the whole bit. no dribbling them in one by one, we're doing the group thing.
Now the return values, and you're gonna want to know these fr fr:
1β slay! all needed RDMA Reads were posted successfully β-EINVALβ the client provided too many chunks or segments π like, overachiever behavior, but incorrect-ENOMEMβ therdma_rwcontext pool was exhausted π out of juice-ENOTCONNβ posting failed because the connection is lost π she's gone-EIOβrdma_rwinitialization failed (DMA mapping, etc.) π₯ and that's the whole explanation, don't @ me
π SEE ALSO π
so many sisters in the same kernel file, we love a supportive friend group π
Kernel file ./net/sunrpc/xprtrdma/svc_rdma_rw.c
svc_rdma_destroy_rw_ctxts(9)svc_rdma_rw_ctx_init(9)svc_rdma_cc_init(9)svc_rdma_cc_release(9)svc_rdma_write_chunk_release(9)svc_rdma_reply_chunk_release(9)svc_rdma_reply_done(9)svc_rdma_write_done(9)svc_rdma_wc_read_done(9)svc_rdma_iov_write(9)svc_rdma_pages_write(9)svc_rdma_xb_write(9)svc_rdma_prepare_write_list(9)svc_rdma_prepare_reply_chunk(9)svc_rdma_build_read_segment(9)svc_rdma_build_read_chunk(9)svc_rdma_copy_inline_range(9)svc_rdma_read_multiple_chunks(9)svc_rdma_read_data_item(9)svc_rdma_read_chunk_range(9)svc_rdma_read_call_chunk(9)svc_rdma_read_special(9)
and that's the page, bestie π§β¨ it came from ./net/sunrpc/xprtrdma, it's dated October 2026, and it answers to the name svc_rdma_process_read_list(9) β ily, go read your RDMA chunks π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms