_scsih_raid_device_add(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– _scsih_raid_device_add(9) πŸ’–

okay so welcome to the Kernel API Manual, bestie β€” manual section 9, kernel-space, no userland nonsense here 🫢. This little page is all about one function: _scsih_raid_device_add. It's short. It's sweet. It does exactly one thing and honestly? Iconic behavior.


✨ NAME ✨

_scsih_raid_device_add β€” add raid_device object πŸ’…


🌸 SYNOPSIS 🌸

void _scsih_raid_device_add (struct MPT3SAS_ADAPTER *ioc , struct
_raid_device *raid_device );

like, that's it. returns void, so there's literally nothing to check. she just does it πŸ”₯


🫢 ARGUMENTS 🫢

  • ioc β€” the per adapter object, aka the whole vibe of the adapter she's working on
  • raid_device β€” a raid_device object, the actual little guy getting added

πŸŽ€ DESCRIPTION πŸŽ€

So what happens? This is added to the raid_device_list link list. That's the whole description. No cap, that's the entire character arc 😭 β€” she takes the raid_device and she links it into raid_device_list. Main character energy, zero plot twists.


πŸ¦‹ SEE ALSO πŸ¦‹

Bestie. Sit down. Grab a strawberry πŸ“. The SEE ALSO on this page is generous β€” like, this function's whole extended friend group, and the kernel file that raised them: ./drivers/scsi/mpt3sas/mpt3sas_scsih.c. Every single one, coming right up πŸ‘‘

  • enum device_responsive_state(9)
  • struct sense_info(9)
  • struct fw_event_work(9)
  • struct _scsi_io_transfer(9)
  • _scsih_set_debug_level(9)
  • _scsih_srch_boot_sas_address(9)
  • _scsih_srch_boot_device_name(9)
  • _scsih_srch_boot_encl_slot(9)
  • mpt3sas_get_port_by_id(9)
  • mpt3sas_get_vphy_by_phy(9)
  • _scsih_is_boot_device(9)
  • _scsih_get_sas_address(9)
  • _scsih_determine_boot_device(9)

the boot-device girlies πŸŽ€ they're all here and they're all thriving.

  • mpt3sas_get_pdev_from_target(9)
  • __mpt3sas_get_sdev_by_rphy(9)
  • __mpt3sas_get_sdev_by_addr(9)
  • mpt3sas_get_sdev_by_addr(9)
  • mpt3sas_get_sdev_by_handle(9)
  • _scsih_display_enclosure_chassis_info(9)
  • _scsih_sas_device_remove(9)
  • _scsih_device_remove_by_handle(9)
  • mpt3sas_device_remove_by_sas_address(9)
  • _scsih_sas_device_add(9)
  • _scsih_sas_device_init_add(9)

look at all those lookups β€” the __ double-underscore ones are lowkey the internals, iykyk πŸ’€

  • mpt3sas_get_pdev_by_wwid(9)
  • mpt3sas_get_pdev_by_handle(9)
  • _scsih_set_nvme_max_shutdown_latency(9)
  • _scsih_pcie_device_remove(9)
  • _scsih_pcie_device_remove_by_handle(9)
  • _scsih_pcie_device_add(9)
  • _scsih_raid_device_find_by_id(9)
  • mpt3sas_raid_device_find_by_handle(9)
  • _scsih_raid_device_find_by_wwid(9)
  • _scsih_raid_device_remove(9)

the raid_device family!! _scsih_raid_device_add literally has siblings and they're all serving 🌈 (find_by_id, find_by_handle, find_by_wwid β€” the triplets, obsessed)

  • mpt3sas_scsih_expander_find_by_handle(9)
  • mpt3sas_scsih_enclosure_find_by_handle(9)
  • mpt3sas_scsih_expander_find_by_sas_address(9)
  • _scsih_expander_node_add(9)
  • _scsih_is_end_device(9)
  • _scsih_is_nvme_pciescsi_device(9)
  • _scsih_scsi_lookup_find_by_target(9)
  • _scsih_scsi_lookup_find_by_lun(9)
  • mpt3sas_scsih_scsi_lookup_get(9)
  • scsih_change_queue_depth(9)
  • mpt3sas_scsih_change_queue_depth(9)
  • scsih_target_alloc(9)
  • scsih_target_destroy(9)
  • scsih_sdev_init(9)
  • scsih_sdev_destroy(9)

alloc/destroy, init/destroy β€” she's giving balance, she's giving duality ✨

  • _scsih_display_sata_capabilities(9)
  • scsih_is_raid(9)
  • scsih_get_resync(9)
  • scsih_get_state(9)
  • _scsih_set_level(9)
  • _scsih_get_volume_capabilities(9)
  • _scsih_enable_tlr(9)
  • scsih_sdev_configure(9)
  • scsih_bios_param(9)
  • _scsih_response_code(9)
  • _scsih_tm_done(9)
  • mpt3sas_scsih_set_tm_flag(9)
  • mpt3sas_scsih_clear_tm_flag(9)
  • scsih_tm_cmd_map_status(9)
  • scsih_tm_post_processing(9)
  • mpt3sas_scsih_issue_tm(9)
  • _scsih_tm_display_info(9)
  • scsih_abort(9)
  • scsih_dev_reset(9)
  • scsih_target_reset(9)
  • scsih_host_reset(9)

task management clique 🫢 set flag, clear flag, issue it, post-process it β€” teamwork fr fr.

  • _scsih_fw_event_add(9)
  • _scsih_fw_event_del_from_list(9)
  • _scsih_fw_event_requeue(9)
  • _scsih_error_recovery_delete_devices(9)
  • mpt3sas_port_enable_complete(9)
  • _scsih_fw_event_cleanup_queue(9)
  • _scsih_internal_device_block(9)
  • _scsih_internal_device_unblock(9)
  • _scsih_ublock_io_all_device(9)
  • _scsih_ublock_io_device_wait(9)
  • _scsih_ublock_io_device(9)
  • _scsih_block_io_all_device(9)
  • _scsih_block_io_device(9)
  • _scsih_block_io_to_children_attached_to_ex(9)
  • _scsih_block_io_to_children_attached_directly(9)
  • _scsih_block_io_to_pcie_children_attached_directly(9)

block/unblock their whole world 😭 the children ones? she blocks the children, dramatic but necessary.

  • _scsih_tm_tr_send(9)
  • _scsih_tm_tr_complete(9)
  • _scsih_sas_control_complete(9)
  • _scsih_tm_tr_volume_send(9)
  • _scsih_tm_volume_tr_complete(9)
  • _scsih_issue_delayed_event_ack(9)
  • _scsih_issue_delayed_sas_io_unit_ctrl(9)
  • mpt3sas_check_for_pending_internal_cmds(9)
  • _scsih_check_for_pending_tm(9)
  • _scsih_check_topo_delete_events(9)
  • _scsih_check_pcie_topo_remove_events(9)
  • _scsih_set_volume_delete_flag(9)
  • _scsih_set_volume_handle_for_tr(9)
  • _scsih_check_ir_config_unhide_events(9)
  • _scsih_check_volume_delete_events(9)
  • _scsih_temp_threshold_events(9)
  • _scsih_flush_running_cmds(9)

delayed events, pending checks, delete flags β€” this section is giving "her calendar is full" πŸ—“οΈ

  • _scsih_setup_eedp(9)
  • _scsih_eedp_error_handling(9)
  • scsih_qcmd(9)
  • _scsih_normalize_sense(9)
  • _scsih_scsi_ioc_info(9)
  • _scsih_turn_on_pfa_led(9)
  • _scsih_turn_off_pfa_led(9)
  • _scsih_send_event_to_turn_on_pfa_led(9)
  • _scsih_smart_predicted_fault(9)
  • _scsih_io_done(9)

LED girls!! on, off, and the event that turns it on β€” she's got range πŸ’‘πŸ’–

  • _scsih_update_vphys_after_reset(9)
  • _scsih_get_port_table_after_reset(9)
  • _scsih_look_and_get_matched_port_entry(9)
  • _scsih_del_phy_part_of_anther_port(9)
  • _scsih_add_or_del_phys_from_existing_port(9)
  • _scsih_del_dirty_vphy(9)
  • _scsih_del_dirty_port_entries(9)
  • _scsih_sas_port_refresh(9)
  • _scsih_alloc_vphy(9)
  • _scsih_sas_host_refresh(9)
  • _scsih_sas_host_add(9)
  • _scsih_expander_add(9)
  • mpt3sas_expander_remove(9)
  • _scsih_done(9)
  • _scsi_send_scsi_io(9)

(yes it really is spelled _scsih_del_phy_part_of_anther_port β€” not me, that's the actual name πŸ™ˆ)

  • _scsih_determine_disposition(9)
  • _scsih_report_luns(9)
  • _scsih_start_unit(9)
  • _scsih_test_unit_ready(9)
  • _scsih_ata_pass_thru_idd(9)
  • _scsih_wait_for_device_to_become_ready(9)
  • _scsih_wait_for_target_to_become_ready(9)
  • _scsih_check_access_status(9)
  • _scsih_check_device(9)
  • _scsih_add_device(9)
  • _scsih_remove_device(9)
  • _scsih_sas_topology_change_event_debug(9)
  • _scsih_sas_topology_change_event(9)
  • _scsih_sas_device_status_change_event_debug(9)
  • _scsih_sas_device_status_change_event(9)

"wait for device to become ready" β€” the most relatable function in the entire kernel, honestly 😭⏳

  • _scsih_check_pcie_access_status(9)
  • _scsih_pcie_device_remove_from_sml(9)
  • _scsih_pcie_check_device(9)
  • _scsih_pcie_add_device(9)
  • _scsih_pcie_topology_change_event_debug(9)
  • _scsih_pcie_topology_change_event(9)
  • _scsih_pcie_device_status_change_event_debug(9)
  • _scsih_pcie_device_status_change_event(9)
  • _scsih_sas_enclosure_dev_status_change_event_debug(9)
  • _scsih_sas_enclosure_dev_status_change_event(9)
  • _scsih_sas_broadcast_primitive_event(9)
  • _scsih_sas_discovery_event(9)
  • _scsih_sas_device_discovery_error_event(9)
  • _scsih_pcie_enumeration_event(9)
  • _scsih_ir_fastpath(9)
  • _scsih_reprobe_lun(9)

event handlers everywhere β€” every one of these has a _debug twin and that's sibling energy πŸ‘―

  • _scsih_sas_volume_add(9)
  • _scsih_sas_volume_delete(9)
  • _scsih_sas_pd_expose(9)
  • _scsih_sas_pd_hide(9)
  • _scsih_sas_pd_delete(9)
  • _scsih_sas_pd_add(9)
  • _scsih_sas_ir_config_change_event_debug(9)
  • _scsih_sas_ir_config_change_event(9)
  • _scsih_sas_ir_volume_event(9)
  • _scsih_sas_ir_physical_disk_event(9)
  • _scsih_sas_ir_operation_status_event_debug(9)
  • _scsih_sas_ir_operation_status_event(9)

expose / hide / add / delete β€” the physical disk glow-up pipeline πŸ’…βœ¨

  • _scsih_prep_device_scan(9)
  • _scsih_update_device_qdepth(9)
  • _scsih_mark_responding_sas_device(9)
  • _scsih_create_enclosure_list_after_reset(9)
  • _scsih_search_responding_sas_devices(9)
  • _scsih_mark_responding_pcie_device(9)
  • _scsih_search_responding_pcie_devices(9)
  • _scsih_mark_responding_raid_device(9)
  • _scsih_search_responding_raid_devices(9)
  • _scsih_mark_responding_expander(9)
  • _scsih_search_responding_expanders(9)
  • _scsih_remove_unresponding_devices(9)
  • _scsih_scan_for_devices_after_reset(9)

mark responding β†’ search responding β†’ remove unresponding. she's doing a whole vibe check on the entire topology 🌈

  • mpt3sas_scsih_pre_reset_handler(9)
  • mpt3sas_scsih_clear_outstanding_scsi_tm_commands(9)
  • mpt3sas_scsih_reset_done_handler(9)
  • _mpt3sas_fw_work(9)
  • _firmware_event_work(9)
  • mpt3sas_scsih_event_callback(9)
  • _scsih_expander_node_remove(9)
  • _scsih_nvme_shutdown(9)
  • _scsih_ir_shutdown(9)
  • _scsih_get_shost_and_ioc(9)
  • scsih_remove(9)
  • scsih_shutdown(9)

reset in, reset out, fw work, shutdown β€” the life cycle arc, we love a full-circle moment πŸ¦‹

  • _scsih_probe_boot_devices(9)
  • _scsih_probe_raid(9)
  • _scsih_probe_sas(9)
  • get_next_pcie_device(9)
  • pcie_device_make_active(9)
  • _scsih_probe_pcie(9)
  • _scsih_probe_devices(9)
  • scsih_scan_start(9)
  • _scsih_complete_devices_scanning(9)
  • scsih_scan_finished(9)
  • scsih_map_queues(9)
  • _scsih_determine_hba_mpi_version(9)
  • _scsih_probe(9)
  • scsih_suspend(9)
  • scsih_resume(9)

probe, probe, probe, scan start, scan finished, map queues β€” she never sleeps 😴 (except suspend/resume, which literally is sleep, slay πŸ’€)

  • scsih_pci_error_detected(9)
  • scsih_pci_slot_reset(9)
  • scsih_pci_resume(9)
  • scsih_pci_mmio_enabled(9)
  • scsih_init(9)
  • scsih_exit(9)
  • _mpt3sas_init(9)
  • _mpt3sas_exit(9)

and we close it out with init/exit, twice, because the double-underscore layer deserves its own goodbye πŸŽ€πŸ‘‹


πŸ’€ real talk, bestie: that SEE ALSO list is long, but nothing on it is optional reading for this page β€” it's literally the required cross-reference block. Every name, every (9), every underscore. No skips. Periodt.

and that's the page!! πŸ§šπŸ’œ from ./drivers/scsi/mpt3sas, dated October 2026, in the Kernel API Manual β€” this has been your girl _scsih_raid_device_add(9), signing off, adding herself to the list, and absolutely eating πŸ’…βœ¨

πŸ“¦ where this page comes from