svc_rdma_read_data_item(9)
π svc_rdma_read_data_item β from the Kernel API Manual (section 9), bestie
okay so picture this: it's a whole kernel API page, manual name is Kernel API Manual, and it lives in section 9, and the function is svc_rdma_read_data_item. yes that's a mouthful. no we're not renaming it. let's go β¨
π NAME π
svc_rdma_read_data_item β literally builds RDMA Reads to go pull the data item Read chunks. that's the whole job. it's giving "fetch, but make it DMA" π
πΈ SYNOPSIS πΈ
int svc_rdma_read_data_item (struct svc_rqst *rqstp , struct
svc_rdma_recv_ctxt *head );
two args, one int back. short and cute. π«Ά
π¦ ARGUMENTS π¦
rqstpβ the RPC transaction context. this is your main character, the whole transaction vibe lives in here.headβ context for the ongoing I/O. yes, "head". yes, it's what it's called. moving on π
π₯ DESCRIPTION π₯
so the chunk data lands in the page list of rqstp->rq_arg.pages. that's the destination, that's where it goes, no cap. π₯
here's the little detail nobody tells you: currently NFSD does not look at the rqstp->rq_arg.tail[0] kvec. like, at all. so because of that, the XDR round-up of the Read chunk and the trailing inline content β both of those β must be added at the end of the pagelist. both. gotta do it. π
be careful here, this is the kind of thing that bites you if you skip it β the round-up and the trailing inline content go at the end of the pagelist, periodt.
now the return values, and listen, these matter, here they are exactly as they come:
0β the RDMA Read WQEs were successfully built. slay, we're so back π-EINVALβ the client provided too many chunks or segments. rude. too much.-ENOMEMβ therdma_rwcontext pool was exhausted. we ran out, it happens π-ENOTCONNβ posting failed, and the reason is that the connection is lost. π-EIOβrdma_rwinitialization failed (DMA mapping, etc). something went sideways in the setup.
π SEE ALSO π
the kernel file, right here babes:
./net/sunrpc/xprtrdma/svc_rdma_rw.c
and the whole friend group, everyone's invited, honestly obsessed with how long this list is:
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_chunk_range(9)svc_rdma_read_call_chunk(9)svc_rdma_read_special(9)svc_rdma_process_read_list(9)
okay that's the page!! π source is ./net/sunrpc/xprtrdma, dated October 2026, and the whole thing is filed under svc_rdma_read_data_item(9) in the Kernel API Manual β mwah, go read your WQEs, love u bye ππ§β
π¦ 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