mpi3mr_setup_divert_ws(9)
π¦ mpi3mr_setup_divert_ws(9) β from the Kernel API Manual π¦
okay bestie, welcome to one (1) extremely specific little kernel function. it lives in the mpi3mr driver, it's from the Kernel API Manual, and it has exactly one job. let's get into it π
β¨ NAME β¨
mpi3mr_setup_divert_ws β Setup Divert IO flag for write same
like, that's the whole pitch. it sets up the divert IO flag for write same. iconic behavior, no notes π
πΈ SYNOPSIS πΈ
void mpi3mr_setup_divert_ws (struct mpi3mr_ioc *mrioc , struct scsi_cmnd
*scmd , struct mpi3_scsi_io_request *scsiio_req , u32 *scsiio_flags ,
u16 wslen );
returns nothing btw. it's a void. it just does the thing and leaves. main character energy fr π
π ARGUMENTS π
five of them. yes, five. buckle up, bestie:
mriocβ Adapter instance reference π«Ά the controller you're talking about.scmdβ SCSI command reference. the actual command in question.scsiio_reqβ MPI3 SCSI IO request. the request struct headed for firmware town.scsiio_flagsβ Pointer to MPI3 SCSI IO Flags. yes, a pointer β so this function can reach in and set your flags for you. rude but helpful β¨wslenβ write same max length. it's au16, so keep it cozy.
π₯ DESCRIPTION π₯
so here's the vibe check: this function grabs three little values out of the write same SCSI IO β unmap, ndob, and the number of blocks π
and then, based on those values, it sets the divert IO flag and also the reason for diverting the IO to firmware. that's it. that's the whole function. it reads, it decides, it flags. slay π
no cap, it literally does not compute anything else. values in, flag + divert reason out, see ya π
β RETURN β
Nothing. it's void. it gives you no gift back. it just sets your flags via the pointer and dips π
π§ SEE ALSO π§
the kernel file in question, live and in person:
./drivers/scsi/mpi3mr/mpi3mr_os.c
and now the friend group. every single one of these, because we don't ghost anybody π:
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_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_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)
and that's the whole page, bestie!! π«Ά this lil cutie is brought to you by ./drivers/scsi/mpi3mr (the version/source, mwah), dated October 2026, and it's page mpi3mr_setup_divert_ws(9) in case you forgot where you were. bye pookie, go set some divert IO flags πβ¨
π¦ 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