_scsih_wait_...become_ready(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ _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 a u8. πŸ™ˆ
  • 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