mpi3mr_issue_tm(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 to
  • lun β€” 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 πŸ”₯

  • 0 on 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