drivers/scsi/device_handler/scsi_dh_rdac.c
Source file repositories/reference/linux-study-clean/drivers/scsi/device_handler/scsi_dh_rdac.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/device_handler/scsi_dh_rdac.c- Extension
.c- Size
- 20483 bytes
- Lines
- 850
- Domain
- Driver Families
- Bucket
- drivers/scsi
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- 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.
- 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
scsi/scsi.hscsi/scsi_eh.hscsi/scsi_dh.hlinux/workqueue.hlinux/slab.hlinux/module.h
Detected Declarations
struct rdac_mode_6_hdrstruct rdac_mode_10_hdrstruct rdac_mode_commonstruct rdac_pg_legacystruct rdac_pg_expandedstruct c9_inquirystruct c4_inquirystruct c8_inquirystruct rdac_controllerstruct c2_inquirystruct rdac_dh_datastruct rdac_queue_datafunction rdac_failover_getfunction list_for_each_entryfunction release_controllerfunction list_for_each_entryfunction get_lun_infofunction check_ownershipfunction list_for_each_entry_rcufunction initialize_controllerfunction set_mode_selectfunction mode_select_handle_sensefunction send_mode_selectfunction list_for_each_entry_safefunction queue_mode_selectfunction rdac_activatefunction rdac_prep_fnfunction rdac_check_sensefunction rdac_bus_attachfunction rdac_bus_detachfunction rdac_initfunction rdac_exitmodule init rdac_init
Annotated Snippet
module_init(rdac_init);
module_exit(rdac_exit);
MODULE_DESCRIPTION("Multipath LSI/Engenio/NetApp E-Series RDAC driver");
MODULE_AUTHOR("Mike Christie, Chandra Seetharaman");
MODULE_VERSION("01.00.0000.0000");
MODULE_LICENSE("GPL");
Annotation
- Immediate include surface: `scsi/scsi.h`, `scsi/scsi_eh.h`, `scsi/scsi_dh.h`, `linux/workqueue.h`, `linux/slab.h`, `linux/module.h`.
- Detected declarations: `struct rdac_mode_6_hdr`, `struct rdac_mode_10_hdr`, `struct rdac_mode_common`, `struct rdac_pg_legacy`, `struct rdac_pg_expanded`, `struct c9_inquiry`, `struct c4_inquiry`, `struct c8_inquiry`, `struct rdac_controller`, `struct c2_inquiry`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: integration implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.