mpi3mr_issue_tm(9)
π mpi3mr_issue_tm(9) β like, the Kernel API Manual page bestie π
okay so real talk, this page is from the Kernel API Manual, and it's about one function: mpi3mr_issue_tm. get comfy, we're doing this β¨
πΈ NAME πΈ
mpi3mr_issue_tm β Issue Task Management request. that's it, that's the whole vibe. short king of a NAME section π
π¦ SYNOPSIS π¦
int mpi3mr_issue_tm (struct mpi3mr_ioc *mrioc , u8 tm_type , u16 handle
, uint lun , u16 htag , ulong timeout , struct mpi3mr_drv_cmd *drv_cmd ,
u8 *resp_code , struct scsi_cmnd *scmd );
literally nine whole arguments. she's high-maintenance and honestly? same π
π§ ARGUMENTS π§
mriocβ the adapter instance reference. your lil handle to the controller bb π«Άtm_typeβ the Task Management type. which flavor of TM we're sending β¨handleβ the device handle. iykyk which device we're talking tolunβ the lun ID. yes, that lun πhtagβ the host tag of the TM request. gotta tag it so we can find it later πΈtimeoutβ the TM timeout value. how long we're willing to wait before we start panicking πdrv_cmdβ the internal command tracker. keeping tabs on this whole situation πresp_codeβ the response code place holder. it holds the place where the response code goes, iconic behavior, no notes πscmdβ the SCSI command. the main character of this whole saga β
π DESCRIPTION π
So the way this works is: it issues a Task Management Request to the controller for a specified target, lun and command β and then it waits for that request to complete, and checks the TM response. patient queen energy π§ββοΈ
and then, the dramatic part: if the TM timed out, it recovers the TM by issuing a controller reset. not me escalating straight to a whole controller reset ππ like that's the nuclear option and she takes it. slay, i guess.
π₯ RETURN π₯
0on success π- non-zero on errors π
fr fr, that's the entire contract, don't overthink it.
π SEE ALSO π
first up, the kernel file this lives in: ./drivers/scsi/mpi3mr/mpi3mr_os.c π
and then... bestie. buckle up. this list ate and left no crumbs, i'm not skipping a single one of these, we are doing ALL of them:
mpi3mr_host_tag_for_scmd(9), mpi3mr_scmd_from_host_tag(9), mpi3mr_clear_scmd_priv(9), mpi3mr_fwevt_free(9), mpi3mr_fwevt_get(9), mpi3mr_fwevt_put(9), mpi3mr_alloc_fwevt(9), mpi3mr_fwevt_add_to_list(9), mpi3mr_hdb_trigger_data_event(9), mpi3mr_fwevt_del_from_list(9), mpi3mr_dequeue_fwevt(9), mpi3mr_cancel_work(9), mpi3mr_cleanup_fwevt_list(9), mpi3mr_queue_qd_reduction_event(9), mpi3mr_invalidate_devhandles(9), mpi3mr_print_scmd(9), mpi3mr_flush_scmd(9), mpi3mr_count_dev_pending(9), mpi3mr_count_tgt_pending(9), mpi3mr_flush_host_io(9), mpi3mr_flush_cmds_for_unrecovered_controller(9), mpi3mr_alloc_tgtdev(9), mpi3mr_tgtdev_add_to_list(9), mpi3mr_tgtdev_del_from_list(9), __mpi3mr_get_tgtdev_by_handle(9), mpi3mr_get_tgtdev_by_handle(9), __mpi3mr_get_tgtdev_by_perst_id(9), mpi3mr_get_tgtdev_by_perst_id(9), __mpi3mr_get_tgtdev_from_tgtpriv(9), mpi3mr_set_io_divert_for_all_vd_in_tg(9), mpi3mr_print_device_event_notice(9), mpi3mr_remove_tgtdev_from_host(9), mpi3mr_report_tgtdev_to_host(9), mpi3mr_change_queue_depth(9), mpi3mr_update_sdev(9), mpi3mr_refresh_tgtdevs(9), mpi3mr_debug_dump_devpg0(9), mpi3mr_update_tgtdev(9), mpi3mr_devstatuschg_evt_bh(9), mpi3mr_devinfochg_evt_bh(9), mpi3mr_free_enclosure_list(9), mpi3mr_enclosure_find_by_handle(9), mpi3mr_process_trigger_data_event_bh(9), mpi3mr_encldev_add_chg_evt_debug(9), mpi3mr_encldev_add_chg_evt_bh(9), mpi3mr_sastopochg_evt_debug(9), mpi3mr_sastopochg_evt_bh(9), mpi3mr_pcietopochg_evt_debug(9), mpi3mr_pcietopochg_evt_bh(9), mpi3mr_logdata_evt_bh(9), mpi3mr_update_sdev_qd(9), mpi3mr_set_qd_for_all_vd_in_tg(9), mpi3mr_fwevt_bh(9), mpi3mr_fwevt_worker(9), mpi3mr_create_tgtdev(9), mpi3mr_flush_delayed_cmd_lists(9), mpi3mr_dev_rmhs_complete_iou(9), mpi3mr_dev_rmhs_complete_tm(9), mpi3mr_dev_rmhs_send_tm(9), mpi3mr_complete_evt_ack(9), mpi3mr_send_event_ack(9), mpi3mr_pcietopochg_evt_th(9), mpi3mr_sastopochg_evt_th(9), mpi3mr_devstatuschg_evt_th(9), mpi3mr_preparereset_evt_th(9), mpi3mr_energypackchg_evt_th(9), mpi3mr_cablemgmt_evt_th(9), mpi3mr_add_event_wait_for_device_refresh(9), mpi3mr_os_handle_events(9), mpi3mr_setup_eedp(9), mpi3mr_build_sense_buffer(9), mpi3mr_map_eedp_error(9), mpi3mr_process_op_reply_desc(9), mpi3mr_get_chain_idx(9), mpi3mr_prepare_sg_scmd(9), mpi3mr_build_sg_scmd(9), mpi3mr_tm_response_name(9), mpi3mr_bios_param(9), mpi3mr_map_queues(9), mpi3mr_get_fw_pending_ios(9), mpi3mr_print_pending_host_io(9), mpi3mr_wait_for_host_io(9), mpi3mr_setup_divert_ws(9), mpi3mr_eh_host_reset(9), mpi3mr_eh_bus_reset(9), mpi3mr_eh_target_reset(9), mpi3mr_eh_dev_reset(9), mpi3mr_eh_abort(9), mpi3mr_scan_start(9), mpi3mr_scan_finished(9), mpi3mr_sdev_destroy(9), mpi3mr_target_destroy(9), mpi3mr_sdev_configure(9), mpi3mr_sdev_init(9), mpi3mr_target_alloc(9), mpi3mr_check_return_unmap(9), mpi3mr_allow_scmd_to_fw(9), mpi3mr_qcmd(9), mpi3mr_init_drv_cmd(9), osintfc_mrioc_security_status(9), mpi3mr_probe(9), mpi3mr_remove(9), mpi3mr_shutdown(9), mpi3mr_suspend(9), mpi3mr_resume(9), mpi3mr_pcierr_error_detected(9), mpi3mr_pcierr_slot_reset(9), mpi3mr_pcierr_resume(9), mpi3mr_pcierr_mmio_enabled(9)
like i said. ALL of them. every single one showed up, we don't ghost functions here π«Άβ¨
ngl that SEE ALSO is a whole friend group and this function is the one who knows everybody at the party π
and that's the page!! mwah π this cutie lives in ./drivers/scsi/mpi3mr and the date on it is October 2026, so likeβ¦ mark your calendar bestie, the future is now πβπ
π¦ 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