nvme_fc_rcv_ls_req(9)
π nvme_fc_rcv_ls_req(9) β the kernel API manual, but make it make sense π
okay so bestie, welcome to the Kernel API Manual page for nvme_fc_rcv_ls_req β yes that's the whole title, yes I'm gonna say it like five times, no I will not be normal about it. This is the transport entry point that an LLDD calls when an NVMe LS request shows up. Slay. Let's get into it π
β¨ NAME β¨
nvme_fc_rcv_ls_req β transport entry point called by an LLDD upon the reception of a NVME LS request.
that's it. that's the vibe. LLDD hears an NVME LS request, LLDD picks up the phone and calls this function. periodt π«Ά
πΈ SYNOPSIS πΈ
int nvme_fc_rcv_ls_req (struct nvme_fc_remote_port *portptr , struct
nvmefc_ls_rsp *lsrsp , void *lsreqbuf , u32 lsreqbuf_len );
like, look at that signature. four args, one int coming back at you. very demure, very mindful π
π¦ ARGUMENTS π¦
okay the four besties you're passing in, one by one:
portptrβ pointer to the (registered) remote port that the LS was received from. and here's the detail you cannot skip: the remoteport is associated with a specific localport. iykyk π«lsrspβ pointer to anvmefc_ls_rspresponse structure, and this one gets used to reference the exchange corresponding to the LS when you issue an ls response. it's giving "receipt for the conversation" energy π§Ύlsreqbufβ pointer to the buffer containing the LS Request. literally just the request, sitting in a buffer.lsreqbuf_lenβ length, in bytes, of the received LS request. yes babe, we're measuring.u32measuring. π
π DESCRIPTION π
so here's the tea π₯: the nvme-fc layer will copy payload to an internal structure for processing. COPY. it takes its own little copy for itself, like a responsible main character.
which means β and this is the part I need you to internalize β upon completion of the routine, the LLDD may immediately free/reuse the LS request buffer passed in the call. immediately!! no waiting, no "hold on let me check", no lingering attachments. the buffer is free real estate the second this returns, bestie π¦β¨
β οΈ but listen: if this routine returns error, the LLDD should abort the exchange. error means abort. no cap, no exceptions, do not pass go π
π SEE ALSO π
go read some more, it's good for you:
- Kernel file
./drivers/nvme/host/fc.c nvme_fc_register_localport(9)nvme_fc_unregister_localport(9)nvme_fc_register_remoteport(9)nvme_fc_unregister_remoteport(9)nvme_fc_rescan_remoteport(9)
register, unregister, register, unregister, rescan β it's a whole cycle, it's giving choreography ππ
and that's the page!! π this little love letter lives over in ./drivers/nvme/host, dated October 2026, and it's filed under nvme_fc_rcv_ls_req(9) β mwah, go free that buffer, you icon ππ
π¦ 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