drivers/nvme/target/rdma.c
Source file repositories/reference/linux-study-clean/drivers/nvme/target/rdma.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/nvme/target/rdma.c- Extension
.c- Size
- 53966 bytes
- Lines
- 2133
- Domain
- Representative Device Path
- Bucket
- PCIe NVMe Storage Path
- Inferred role
- Representative Device Path: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/atomic.hlinux/blk-integrity.hlinux/ctype.hlinux/delay.hlinux/err.hlinux/init.hlinux/module.hlinux/nvme.hlinux/slab.hlinux/string.hlinux/wait.hlinux/inet.hlinux/unaligned.hrdma/ib_verbs.hrdma/rdma_cm.hrdma/rw.hrdma/ib_cm.hlinux/nvme-rdma.hnvmet.h
Detected Declarations
struct nvmet_rdma_srqstruct nvmet_rdma_cmdstruct nvmet_rdma_rspstruct nvmet_rdma_queuestruct nvmet_rdma_portstruct nvmet_rdma_srqstruct nvmet_rdma_deviceenum nvmet_rdma_queue_statefunction srq_size_setfunction num_pagesfunction nvmet_rdma_need_data_infunction nvmet_rdma_need_data_outfunction nvmet_rdma_get_rspfunction nvmet_rdma_put_rspfunction nvmet_rdma_free_inline_pagesfunction nvmet_rdma_alloc_inline_pagesfunction nvmet_rdma_alloc_cmdfunction nvmet_rdma_free_cmdfunction nvmet_rdma_alloc_cmdsfunction nvmet_rdma_free_cmdsfunction nvmet_rdma_alloc_rspfunction nvmet_rdma_free_rspfunction nvmet_rdma_alloc_rspsfunction nvmet_rdma_free_rspsfunction nvmet_rdma_post_recvfunction nvmet_rdma_process_wr_wait_listfunction nvmet_rdma_check_pi_statusfunction nvmet_rdma_set_sig_domainfunction nvmet_rdma_set_sig_attrsfunction nvmet_rdma_rw_ctx_initfunction nvmet_rdma_rw_ctx_destroyfunction nvmet_rdma_release_rspfunction nvmet_rdma_error_compfunction nvmet_rdma_send_donefunction nvmet_rdma_queue_responsefunction nvmet_rdma_read_data_donefunction nvmet_rdma_write_data_donefunction nvmet_rdma_use_inline_sgfunction nvmet_rdma_map_sgl_inlinefunction nvmet_rdma_map_sgl_keyedfunction nvmet_rdma_map_sglfunction nvmet_rdma_execute_commandfunction nvmet_rdma_handle_commandfunction nvmet_rdma_recv_not_livefunction nvmet_rdma_recv_donefunction nvmet_rdma_destroy_srqfunction nvmet_rdma_destroy_srqsfunction nvmet_rdma_init_srq
Annotated Snippet
module_init(nvmet_rdma_init);
module_exit(nvmet_rdma_exit);
MODULE_DESCRIPTION("NVMe target RDMA transport driver");
MODULE_LICENSE("GPL v2");
MODULE_ALIAS("nvmet-transport-1"); /* 1 == NVMF_TRTYPE_RDMA */
Annotation
- Immediate include surface: `linux/atomic.h`, `linux/blk-integrity.h`, `linux/ctype.h`, `linux/delay.h`, `linux/err.h`, `linux/init.h`, `linux/module.h`, `linux/nvme.h`.
- Detected declarations: `struct nvmet_rdma_srq`, `struct nvmet_rdma_cmd`, `struct nvmet_rdma_rsp`, `struct nvmet_rdma_queue`, `struct nvmet_rdma_port`, `struct nvmet_rdma_srq`, `struct nvmet_rdma_device`, `enum nvmet_rdma_queue_state`, `function srq_size_set`, `function num_pages`.
- Atlas domain: Representative Device Path / PCIe NVMe Storage Path.
- Implementation status: integration implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.