svc_rdma_read_special(9)
π svc_rdma_read_special β the Kernel API Manual page you actually want to read π
Okay so bestie, this one lives in the Kernel API Manual and it's lowkey iconic. It's called svc_rdma_read_special and yes, it is that girl β the one that builds RDMA Read WQEs to pull a Long Message. Let's get into it β¨
πΈ SYNOPSIS πΈ
int svc_rdma_read_special (struct svc_rqst *rqstp , struct
svc_rdma_recv_ctxt *head );
Like, that's the whole signature. She's a function. She returns an int. Slay.
π¦ ARGUMENTS π¦
rqstpβ the RPC transaction context. Your main character struct, fr fr πheadβ the context for the ongoing I/O. She's holding the vibes together π«Ά
β¨ DESCRIPTION β¨
So here's the tea β: the start of the data lands in the first page, just after the Transport header, and the rest of it lands in rqstp->rq_arg.pages. That's it. That's the whole layout bestie, no cap π
Assumptions:
- A PZRC is never sent in an
RDMA_MSGmessage, though it's allowed by spec. (The spec said she could, but she simply didn't. Respect. π)
π Return values β the vibe check π
0β RDMA Read WQEs were successfully built. Ate. π₯-EINVALβ the client provided too many chunks or segments. Not her fault, the client is doing too much π-ENOMEMβ therdma_rwcontext pool was exhausted. She's running on empty, bestie π-ENOTCONNβ posting failed (connection is lost). She ghosted you fr fr π-EIOβrdma_rwinitialization failed (DMA mapping, etc). The DMA mapping said nope π
Heads up: those negative codes are errors, okay? Don't let a -EINVAL slide past you β check your chunks and segments before she gets mad π€
π SEE ALSO π
Kernel file ./net/sunrpc/xprtrdma/svc_rdma_rw.c β that's the source, go look, iykyk π
And her whole friend group, because she does not work alone:
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_process_read_list(9)
Like, the whole squad. Go read them too, bestie, they're all serving π
Okay that's the whole page!! Love that for us. π§
Fr fr, this is from ./net/sunrpc/xprtrdma, dated October 2026, in the Kernel API Manual β swiped straight from svc_rdma_read_special(9) itself. Byeee πβ¨
π¦ 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