mpi3mr_sdev_init(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… mpi3mr_sdev_init(9) β€” bestie edition ✨

okay so you found yourself in the Kernel API Manual, section 9, and the page is literally called mpi3mr_sdev_init. hi. welcome. it's giving "one tiny function, one huge responsibility" and honestly? we love her for it πŸŽ€


🌸 NAME 🌸

mpi3mr_sdev_init β€” the Slave alloc callback handler, no cap πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

int mpi3mr_sdev_init (struct scsi_device *sdev );

that's it. that's the whole signature. she takes one argument and she takes it seriously πŸ’…


πŸ“ ARGUMENTS πŸ“

  • sdev β€” a SCSI device reference 🫢 like, the actual device she's about to set up shop for. hand her the sdev, she does the rest.

✨ DESCRIPTION ✨

so basically what she does is: allocate per device(lun) private data and initialize it.

that's the whole vibe. one device, one lun, its own little private data pocket, freshly allocated and then initialized so it's ready to go. she's not doing cardio, she's not doing drama β€” she's doing setup 🌈 and she's doing it correctly.

the way that per-device private data needs a home and she's the one handing out the keys 😭 iconic behavior fr fr.


πŸ’– RETURN πŸ’–

  • 0 β€” slay, success, we ate πŸ’…βœ¨
  • -ENOMEM β€” memory allocation said "girl, no" πŸ’€ the allocation failed.
no in-between bestie. it's either a clean 0 or -ENOMEM and nothing else. periodt.

πŸ”₯ SEE ALSO πŸ”₯

first up, the source of truth β€” the Kernel file ./drivers/scsi/mpi3mr/mpi3mr_os.c πŸ‘‘

and then… okay. buckle up. this list is long long. like, main character energy with a whole extended universe of friends. every single one of them, in order, no skipping, because we do not leave the girlies out 🫢

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_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_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)

iykyk 😭 that's the whole friend group. say hi to all of them.


🧚 and that's the page bestie!! this one lives under ./drivers/scsi/mpi3mr, dated October 2026, and yes the title at the top is mpi3mr_sdev_init(9) β€” same as the name, because consistency is cute πŸ’œ

go forth and allocate responsibly 🫢🌸✨

πŸ“¦ where this page comes from