_scsih_io_done(9)
π _scsih_io_done(9) β yes bestie, we're reading a kernel callback page π
okay so real talk, this is from the Kernel API Manual, section 9, and it's literally just one tiny function page. but she's important, so grab a matcha π΅ and let's go.
β¨ NAME β¨
_scsih_io_done β the scsi request callback. that's it, that's the whole name. main character energy fr π
πΈ SYNOPSIS πΈ
u8 _scsih_io_done (struct MPT3SAS_ADAPTER *ioc , u16 smid , u8
msix_index , u32 reply );
no cap, that's the exact signature, copy it exactly if you're typing it, do not "fix" the spacing, i am begging π
π¦ ARGUMENTS π¦
okay so she takes four things, let's meet them:
iocβ the per adapter object π this is your adapter, your whole vibe, yourstruct MPT3SAS_ADAPTER *.smidβ the system request message index (au16). it's the little ticket number for the message π₯msix_indexβ the MSIX table index, and it's supplied by the OS, not by us. thank u, operating system π«Άreplyβ the reply message frame, and specifically the lower 32bit addr of it. au32. cute little address slice β¨
π DESCRIPTION π
so basically: this is the callback handler when you're using _scsih_qcmd. that's the tea β like, _scsih_qcmd fires something off, and then this girl right here is the one who gets called back when it's done. she's the "your call is complete, mwah" text message π
that's it. that's the description. short and iconic.
β RETURN β
she returns a u8, and the two moods are:
1β meaning the mf should be freed from_base_interruptπ0β meaning the mf is freed from this function. she handled it herself, no notes π
π lowkey important: which one you get tells you who is responsible for cleaning up the message frame. don't mix them up, bestie. that's a memory situation and we don't play with those.
π SEE ALSO π
okay so this is the part where the page goes absolutely feral β the cross-reference list is long long. like, genuinely, someone was in a mood. but we do not skip a single one, because every detail matters. here we go, hydrate first π§
first, the file itself:
- Kernel file
./drivers/scsi/mpt3sas/mpt3sas_scsih.cβ that's the home base for all of this π
and the icon lineup:
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)_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)_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_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)_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)_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)_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)_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)
likeβ¦ 219 entries. she ate and left no crumbs π and yes, that's every single one, don't come for me.
π quick recap so it sticks:_scsih_io_doneis the callback for_scsih_qcmd, you hand herioc,smid,msix_indexandreply, and she tells you with a1or a0whether the message frame needs freeing from_base_interruptor whether she already freed it herself. periodt. π
and that's the whole page bestie! this beauty lives in ./drivers/scsi/mpt3sas, she's dated October 2026, and she's _scsih_io_done(9) from the Kernel API Manual πβ¨ bye, go free your message frames responsibly π¦
π¦ 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