mpi3mr_dev_r...complete_iou(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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