mpi3mr_dev_r...complete_iou(9)
π mpi3mr_dev_rmhs_complete_iou(9) β from the Linux Kernel API Manual, bestie β¨
okay so picture this: it's a kernel API manual page, it's got a one-track mind, and the track is device removal handshakes. welcome to mpi3mr_dev_rmhs_complete_iou. yes the header truncates it to mpi3mr_dev_r...complete_iou(9) β that's just the page being dramatic about its own name length π
β¨ NAME β¨
mpi3mr_dev_rmhs_complete_iou β Device removal IOUC completion π like, the moment where the IOU control thing is done and we go handle it.
πΈ SYNOPSIS πΈ
void mpi3mr_dev_rmhs_complete_iou (struct mpi3mr_ioc *mrioc , struct
mpi3mr_drv_cmd *drv_cmd );
that's it. that's the whole vibe. returns void, so no "did it work" gossip coming back to you π«Ά
π¦ ARGUMENTS π¦
mriocβ Adapter instance reference π β the adapter in question. your main character.drv_cmdβ Internal command tracker π β the little tracker keeping tabs on the internal command. think: the read receipts for a driver command.
π« DESCRIPTION π«
okay so here's the tea β β this function does one of two things, and which one it picks depends on the IOU control request IOC status:
- it issues a target reset TM to the firmware, pulled from the device removal TM pend list, or
- it retries the removal handshake sequence.
that's the fork in the road. the IOC status on that IOU control request is the vibe check that decides which path we take, no cap. literally the whole personality of this function is "status says go this way, so we go this way" π
β RETURN β
Nothing. ngl, it returns nothing. that's the entire return section. void behavior, zero crumbs π
π SEE ALSO π
first up, the file itself lives here β Kernel file ./drivers/scsi/mpi3mr/mpi3mr_os.c π and then, bestie, buckle up, because the cross-reference list is the main event π
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_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_issue_tm(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β¦ that's a whole friend group and every single one of them showed up to the function party π no gatekeeping, we love to see it.
π§ tiny note bestie: everything above is exactly what the page says β the flags, the args, the void, the whole cross-ref roster. i'm just the hype woman, not the source of truth π
and that's a wrap on this one, mwah π β brought to you by the ./drivers/scsi/mpi3mr crew, dated October 2026, filed under mpi3mr_dev_r...complete_iou(9) because apparently we're still abbreviating it, and honestly? iconic. periodt. π
π¦ 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