mpi3mr_flush...d_controller(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ mpi3mr_flush_cmds_for_unrecovered_controller(9) πŸ’…

okay so this is a page from the Kernel API Manual, section 9 β€” yes bestie, the header on the tin literally reads mpi3mr_flush...d_controller(9) because someone let the truncator cook 😭 β€” but the actual function name is the whole mouthful below, and we're gonna get through it together.


✨ NAME ✨

mpi3mr_flush_cmds_for_unrecovered_controller β€” flushes, like, all the pending cmds. every last one. no crumbs. 🧹


✨ SYNOPSIS ✨

void mpi3mr_flush_cmds_for_unrecovered_controller (struct mpi3mr_ioc
*mrioc );

it returns void and takes exactly one thing. that's it. that's the whole vibe check. 🫢


✨ ARGUMENTS ✨

  • mrioc β€” the adapter instance reference. that's your handle to the controller we're talking about, bestie. πŸ”₯

✨ DESCRIPTION ✨

okay so picture this: the controller is done. cooked. marked unrecoverable, main character energy of the worst kind πŸ’€.

So what this function does is:

  1. it waits for the currently running IO poll threads to exit β€” like, actually waits for them to be gone, no leaving early 😀
  2. and then it flushes all host I/Os and any internal pending cmds. everything in the queue, out. periodt. 🧹✨

and the important context ngl: this whole thing is executed after the controller is marked as unrecoverable. it's the cleanup crew, not the rescue crew. it does not fix your controller, it just tidies up after the tragedy. πŸŽ€


✨ RETURN ✨

Nothing. literally nothing. void. it does the work and gives you zero receipts, and honestly? iconic. πŸ’…


✨ SEE ALSO ✨

it's giving linked list of doom but we love her 🌈 β€” and also the kernel file ./drivers/scsi/mpi3mr/mpi3mr_os.c, which is where this lives:

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_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_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 I said. a lot. but you ate that, bestie πŸ‘‘πŸ’œ


πŸŽ€ quick reminder before you go: this page lives under ./drivers/scsi/mpi3mr, it's the October 2026 edition, and the source/version footer still spells the title all truncated as mpi3mr_flush...d_controller(9) β€” so if you ever cite it, that's the name on the record, no cap. catch you in the next manpage, mwah πŸ’–πŸŒΈπŸ¦‹
πŸ“¦ where this page comes from