_scsih_devic...ve_by_handle(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… _scsih_devic...ve_by_handle(9) β€” the Kernel API Manual, but make it make sense ✨

okay so bestie, welcome to section 9 of the Kernel API Manual, and today's main character is literally _scsih_device_remove_by_handle. no cap, the title up top is truncated in the manpage header so it renders as _scsih_devic...ve_by_handle(9) β€” that's not a typo, that's just the terminal being dramatic πŸ’€. anyway. sit down, grab a lil snack πŸ“, we're learning how to yeet a device object by its handle.


🌸 NAME 🌸

_scsih_device_remove_by_handle β€” removing device object by handle. that's it, that's the vibe. it removes a device object, and it finds that object by its handle. clean, simple, iconic πŸ‘‘


✨ SYNOPSIS ✨

void _scsih_device_remove_by_handle (struct MPT3SAS_ADAPTER *ioc , u16
handle );

returns void β€” meaning it hands nothing back to you, it just does the thing and leaves. main character energy fr fr 🫢


πŸŽ€ ARGUMENTS πŸŽ€

  • ioc β€” per adapter object. this is your adapter bestie, the one that owns the whole situation πŸ’–
  • handle β€” device handle. a u16, tiny but mighty, and it's how we know which device we're removing πŸ”₯

πŸ¦‹ SEE ALSO πŸ¦‹

okay so this is the part where the manpage reveals it knows everyone. the whole squad, the whole group chat, the entire contact list πŸ‘‘πŸ’…

first up, the file itself lives here:

Kernel file ./drivers/scsi/mpt3sas/mpt3sas_scsih.c

and then, the family reunion (all section 9, obviously):

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), 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)

like… the way that list just keeps going 😭 still with me? good. because there's more πŸ’€

_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)

ngl this is giving "the manpage has a lot of friends and wants you to know it" 🌈 but honestly? slay. keep scrolling 🫢

_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), _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)

halfway through and still eating, we love a thorough friend group πŸ“βœ¨

_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)

almost there bestie, hydration check πŸ’œπŸ’…

_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 list. every single one. i counted, i checked, i did not skip a single name because we do not do that here πŸ’– you're welcome, iykyk 🧚


no cap: this page is a tiny one β€” two arguments, void return, and one giant SEE ALSO flex. the facts stayed exactly where they were, only the vibes got a glow-up ✨

okay that's the page!! this lil beauty ships out of ./drivers/scsi/mpt3sas and it's dated October 2026 β€” so jot that down, screenshot it, pin it, whatever you gotta do πŸ“Œ mwah πŸ’‹πŸ¦‹πŸŽ€

πŸ“¦ where this page comes from