_scsih_wait_...become_ready(9)
β¨ _scsih_wait_for_target_to_become_ready β¨
ok so first things first, bestie β this is a page from the Kernel API Manual, section 9. Yes, section 9. The big-league kernel-function section. We're literally in the driver guts rn and honestly? iconic. π
πΈ NAME πΈ
_scsih_wait_for_target_to_become_ready β the one whose whole entire job is handling busy devices. That's it, that's the vibe check. π
π¦ SYNOPSIS π¦
ok don't panic at the wall of text, it's just one function with a lot of little arguments trailing behind it like a group chat:
enum device_responsive_state _scsih_wait_for_target_to_become_ready
(struct MPT3SAS_ADAPTER *ioc , u16 handle , u8 retry_count , u8 is_pd ,
u8 tr_timeout , u8 tr_method );
and yeah, she returns enum device_responsive_state. we'll get to that. π
π ARGUMENTS π
bestie read these carefully, they're all different and none of them are optional:
iocβ per adapter object. the main character of this whole driver, lowkey.handleβ expander handle. yes, an expander handle, not just any handle. respect her specificity. β¨retry_countβ number of times this event has been retried. the "how many times have we been here" counter. πis_pdβ is this hidden raid component. literally a yes/no flag dressed up as au8. πtr_timeoutβ Target Reset timeout value. the patience setting. β³tr_methodβ Target Reset method Hot/Protocol level. two flavors of reset energy, pick your fighter. π₯
π DESCRIPTION π
okay so here's the situation: some devices spend too much time in busy state. rude of them, honestly π. this function's whole thing is that when that happens, it queues the event later instead of just standing there screaming into the void.
and then β Return the device_responsive_state. that's the deal. no cap. π«Ά
π SEE ALSO π
ok so. this next part. this is not a SEE ALSO, this is a whole entire guest list. the manpage is handing you the entire mpt3sas family tree and expecting you to say thank you. and you know what? you WILL say thank you. π
starting with the source itself β Kernel file ./drivers/scsi/mpt3sas/mpt3sas_scsih.c β and then the prelude:
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), 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), 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_add(9), _scsih_raid_device_remove(9), 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)
still with me? good, because the lookup section is just getting started π
_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), _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 section, we love her, we fear her π§
_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), _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), _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)
the LEDs are in here. we got LEDs. this list has 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), _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) β ok yes, that's the sibling page, go read it after this one, _scsih_check_access_status(9), _scsih_check_device(9), _scsih_add_device(9), _scsih_remove_device(9)
and now, the events. all of them. every last one. deep breath π«β¨
_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), _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)
the _debug twins are slaying in their own quiet way, ngl π
_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), _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)
we're in the home stretch, bestie, keep your posture straight π
_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), 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 guest list. every single name. nothing skipped, nothing merged, nothing invented. we ate and left no crumbs. π β¨
and that's the page!! ty for reading this far, genuinely π«Ά
this little masterpiece lives under ./drivers/scsi/mpt3sas, and it was dated October 2026 in the Kernel API Manual. see you in section 9, bestie ππ¦
π¦ 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