_scsih_expander_node_add(9)
π NAME π
okay so bestie, listen β _scsih_expander_node_add is literally just insert expander device to the list. that's it. that's the whole gig. no cap. π¦
this little icon lives in the Kernel API Manual (section 9, kernel dev girlies rise up) and it's your new fave lowkey helper.
β¨ SYNOPSIS β¨
void _scsih_expander_node_add (struct MPT3SAS_ADAPTER *ioc , struct
_sas_node *sas_expander );
like, it returns void. it gives nothing back and honestly? relatable. it just does the thing and dips. π
π ARGUMENTS π
iocβ the per adapter object. this is the main character of the whole mpt3sas story tbh, everything hangs off it. πsas_expanderβ the sas_device object. yes, the arg is called sas_expander and it's described as the sas_device object β we love a slightly chaotic naming moment, it's giving lore. π«Ά
π CONTEXT π
heads up bestie: this function will acquire ioc->sas_node_lock. so like, lock-aware behavior only, please and thank you β don't be out here calling it in a weird lock state and then acting surprised. π
πΈ DESCRIPTION πΈ
so what it actually does: adding new object to the ioc->sas_expander_list. that's the whole vibe β new expander shows up, gets yeeted onto the list, we move on with our lives. iconic, efficient, zero drama. β
π SEE ALSO π
okay this part is a lot and i mean a LOT β the whole mpt3sas friend group showed up to the function. all of these reference the kernel file ./drivers/scsi/mpt3sas/mpt3sas_scsih.c, and every single one is here because i would never do you dirty by skipping the boring ones. π
π§ the type girlies
enum device_responsive_state(9),struct sense_info(9),struct fw_event_work(9),struct _scsi_io_transfer(9)
π the boot-and-debug crew
_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 lookup besties
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)mpt3sas_get_pdev_by_wwid(9),mpt3sas_get_pdev_by_handle(9)
π¦ sas device add/remove era
_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)
π pcie device squad
_scsih_set_nvme_max_shutdown_latency(9),_scsih_pcie_device_remove(9),_scsih_pcie_device_remove_by_handle(9),_scsih_pcie_device_add(9)
π raid device royalty
_scsih_raid_device_find_by_id(9),mpt3sas_raid_device_find_by_handle(9),_scsih_raid_device_find_by_wwid(9),_scsih_raid_device_add(9),_scsih_raid_device_remove(9)
π expander + enclosure finders (our neighbors!!)
mpt3sas_scsih_expander_find_by_handle(9),mpt3sas_scsih_enclosure_find_by_handle(9),mpt3sas_scsih_expander_find_by_sas_address(9)
π device-type checks
β scsi lookup corner
_scsih_scsi_lookup_find_by_target(9),_scsih_scsi_lookup_find_by_lun(9),mpt3sas_scsih_scsi_lookup_get(9)
π§ sdev + queue depth behavior
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),_scsih_display_sata_capabilities(9)
πΈ raid attrs, tlr, bios
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)
π₯ task management (tm) girlies
_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)
π error handling icons
π firmware event crew
_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)
π block / unblock the io
_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)
π¦ tm + delayed-event pipeline
_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)
π topology + ir config events
_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)
π eedp + io path
_scsih_flush_running_cmds(9),_scsih_setup_eedp(9),_scsih_eedp_error_handling(9),scsih_qcmd(9),_scsih_normalize_sense(9),_scsih_scsi_ioc_info(9)
πΈ fault + led friends
_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)
π§ port / phy / vphy maintenance
_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)
π discovery + sending io
_scsih_done(9),_scsi_send_scsi_io(9),_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)
π topology / status change events
_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),_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)
π integrated raid (ir) moment
_scsih_ir_fastpath(9),_scsih_reprobe_lun(9),_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)
β scan / search / reset girlies
_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),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)
π«Ά remove / shutdown besties (hey _scsih_expander_node_remove, twin!!)
_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)
π probe era
_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)
π suspend / resume / pci error + init & exit finale
scsih_suspend(9),scsih_resume(9),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 that's the whole thing, bestie β 0 details skipped, all 200-something friends accounted for. π§β¨
mwah π this page came from ./drivers/scsi/mpt3sas and it's dated October 2026 β so fresh, so iconic, go read it again whenever your expander list needs love π₯π
π¦ 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