ipr_internal_cmd_done(9)
π ipr_internal_cmd_done β like, the Kernel API Manual page you didn't know you needed π
okay bestie, settle in, because we're reading a Kernel API Manual page together and honestly? it's short and it slays. The star of the show is ipr_internal_cmd_done, and yes it's a function, and yes it's from the kernel, and no you cannot escape the SEE ALSO section at the bottom (it is huge, iykyk π).
β¨ NAME β¨
ipr_internal_cmd_done β the op done function for an internally generated op. that's it. that's the whole name section. iconic brevity honestly π¦
πΈ SYNOPSIS πΈ
void ipr_internal_cmd_done (struct ipr_cmnd *ipr_cmd );
notice the return type? it's void. it gives nothing back and it's not sorry about it π
π«Ά ARGUMENTS π«Ά
ipr_cmdβ the ipr command struct. literally just the command struct, that's the whole argument, no cap.
π DESCRIPTION π
okay so here's the vibe: this function is the op done function for an internally generated, blocking op. Bestie. Blocking. We're talking a thread that's justβ¦ sitting there, waiting, catching z's π΄
And what does ipr_internal_cmd_done do about it? It simply wakes the sleeping thread. That's it. That's the whole function. It rolls up, wakes the thread, and leaves. main character energy but make it minimal π§
Return value: none. (told you β void behavior, zero notes π)
lowkey this is the "hey wake up, we're done" of kernel functions and honestly the way it does exactly one thing is so valid of it.
π¦ SEE ALSO π¦
okay so this list is long, but every single one of these is real and we are not skipping a single one, because they're all family. The kernel file is ./drivers/scsi/ipr.c and here's the whole crew:
ipr_trc_hook(9)ipr_lock_and_done(9)ipr_reinit_ipr_cmnd(9)ipr_init_ipr_cmnd(9)__ipr_get_free_ipr_cmnd(9)ipr_get_free_ipr_cmnd(9)ipr_mask_and_clear_interrupts(9)ipr_save_pcix_cmd_reg(9)ipr_set_pcix_cmd_reg(9)__ipr_scsi_eh_done(9)ipr_scsi_eh_done(9)ipr_fail_all_ops(9)ipr_send_command(9)ipr_do_req(9)ipr_init_ioadl(9)ipr_send_blocking_cmd(9)ipr_send_hcam(9)ipr_init_res_entry(9)ipr_is_same_device(9)__ipr_format_res_path(9)ipr_format_res_path(9)ipr_update_res_entry(9)ipr_clear_res_target(9)ipr_handle_config_change(9)ipr_process_ccn(9)strip_whitespace(9)ipr_log_vpd_compact(9)ipr_log_vpd(9)ipr_log_ext_vpd_compact(9)ipr_log_ext_vpd(9)ipr_log_enhanced_cache_error(9)ipr_log_cache_error(9)ipr_log_enhanced_config_error(9)ipr_log_sis64_config_error(9)ipr_log_config_error(9)ipr_log_enhanced_array_error(9)ipr_log_array_error(9)ipr_log_hex_data(9)ipr_log_enhanced_dual_ioa_error(9)ipr_log_dual_ioa_error(9)ipr_log_fabric_path(9)ipr_log64_fabric_path(9)ipr_log_path_elem(9)ipr_log64_path_elem(9)ipr_log_fabric_error(9)ipr_log_sis64_array_error(9)ipr_log_sis64_fabric_error(9)ipr_log_sis64_service_required_error(9)ipr_log_generic_error(9)ipr_log_sis64_device_error(9)ipr_get_error(9)ipr_handle_log_data(9)ipr_process_error(9)ipr_timeout(9)ipr_oper_timeout(9)ipr_find_ses_entry(9)ipr_get_max_scsi_speed(9)ipr_wait_iodbg_ack(9)ipr_get_sis64_dump_data_section(9)ipr_get_ldump_data_section(9)ipr_sdt_copy(9)ipr_init_dump_entry_hdr(9)ipr_dump_ioa_type_data(9)ipr_dump_version_data(9)ipr_dump_trace_data(9)ipr_dump_location_data(9)ipr_get_ioa_dump(9)ipr_release_dump(9)ipr_worker_thread(9)ipr_read_trace(9)ipr_show_fw_version(9)ipr_show_log_level(9)ipr_store_log_level(9)ipr_store_diagnostics(9)ipr_show_adapter_state(9)ipr_store_adapter_state(9)ipr_store_reset_adapter(9)ipr_store_iopoll_weight(9)ipr_alloc_ucode_buffer(9)ipr_free_ucode_buffer(9)ipr_copy_ucode_buffer(9)ipr_build_ucode_ioadl64(9)ipr_build_ucode_ioadl(9)ipr_update_ioa_ucode(9)ipr_store_update_fw(9)ipr_show_fw_type(9)ipr_read_dump(9)ipr_alloc_dump(9)ipr_free_dump(9)ipr_write_dump(9)ipr_change_queue_depth(9)ipr_show_adapter_handle(9)ipr_show_resource_path(9)ipr_show_device_id(9)ipr_show_resource_type(9)ipr_show_raw_mode(9)ipr_store_raw_mode(9)ipr_biosparam(9)ipr_find_starget(9)ipr_target_destroy(9)ipr_find_sdev(9)ipr_sdev_destroy(9)ipr_sdev_configure(9)ipr_sdev_init(9)ipr_match_lun(9)ipr_cmnd_is_free(9)ipr_wait_for_ops(9)ipr_device_reset(9)__ipr_eh_dev_reset(9)ipr_bus_reset_done(9)ipr_abort_timeout(9)ipr_cancel_op(9)ipr_scan_finished(9)ipr_eh_abort(9)ipr_handle_other_interrupt(9)ipr_isr_eh(9)ipr_isr(9)ipr_isr_mhrrq(9)ipr_build_ioadl64(9)ipr_build_ioadl(9)__ipr_erp_done(9)ipr_erp_done(9)ipr_reinit_ipr_cmnd_for_erp(9)__ipr_erp_request_sense(9)ipr_erp_request_sense(9)ipr_erp_cancel_all(9)ipr_dump_ioasa(9)ipr_gen_sense(9)ipr_get_autosense(9)ipr_erp_start(9)ipr_scsi_done(9)ipr_queuecommand(9)ipr_ioa_info(9)ipr_ioa_bringdown_done(9)ipr_ioa_reset_done(9)ipr_set_sup_dev_dflt(9)ipr_set_supported_devs(9)ipr_get_mode_page(9)ipr_check_term_power(9)ipr_scsi_bus_speed_limit(9)ipr_modify_ioafp_mode_page_28(9)ipr_build_mode_select(9)ipr_ioafp_mode_select_page28(9)ipr_build_mode_sense(9)ipr_reset_cmd_failed(9)ipr_reset_mode_sense_failed(9)ipr_ioafp_mode_sense_page28(9)ipr_ioafp_mode_select_page24(9)ipr_reset_mode_sense_page24_failed(9)ipr_ioafp_mode_sense_page24(9)ipr_init_res_table(9)ipr_ioafp_query_ioa_cfg(9)ipr_ioafp_set_caching_parameters(9)ipr_ioafp_inquiry(9)ipr_inquiry_page_supported(9)ipr_ioafp_pageC4_inquiry(9)ipr_ioafp_cap_inquiry(9)ipr_ioafp_page3_inquiry(9)ipr_ioafp_page0_inquiry(9)ipr_ioafp_std_inquiry(9)ipr_ioafp_identify_hrrq(9)ipr_reset_timer_done(9)ipr_reset_start_timer(9)ipr_init_ioa_mem(9)ipr_reset_next_stage(9)ipr_reset_enable_ioa(9)ipr_reset_wait_for_dump(9)ipr_unit_check_no_data(9)ipr_get_unit_check_buffer(9)ipr_reset_get_unit_check_job(9)ipr_set_affinity_nobalance(9)ipr_reset_restore_cfg_space(9)ipr_reset_bist_done(9)ipr_reset_start_bist(9)ipr_reset_slot_reset_done(9)ipr_reset_reset_work(9)ipr_reset_slot_reset(9)ipr_reset_block_config_access_wait(9)ipr_reset_block_config_access(9)ipr_reset_allowed(9)ipr_reset_wait_to_start_bist(9)ipr_reset_alert(9)ipr_reset_quiesce_done(9)ipr_reset_cancel_hcam_done(9)ipr_reset_cancel_hcam(9)ipr_reset_ucode_download_done(9)ipr_reset_ucode_download(9)ipr_reset_shutdown_ioa(9)ipr_reset_ioa_job(9)_ipr_initiate_ioa_reset(9)ipr_initiate_ioa_reset(9)ipr_reset_freeze(9)ipr_pci_mmio_enabled(9)ipr_pci_frozen(9)ipr_pci_slot_reset(9)ipr_pci_perm_failure(9)ipr_pci_error_detected(9)ipr_probe_ioa_part2(9)ipr_free_cmd_blks(9)ipr_free_mem(9)ipr_free_irqs(9)ipr_free_all_resources(9)ipr_alloc_cmd_blks(9)ipr_alloc_mem(9)ipr_initialize_bus_attr(9)ipr_init_regs(9)ipr_init_ioa_cfg(9)ipr_get_chip_info(9)ipr_wait_for_pci_err_recovery(9)ipr_test_intr(9)ipr_test_msi(9)ipr_initiate_ioa_bringdown(9)__ipr_remove(9)ipr_remove(9)ipr_probe(9)ipr_shutdown(9)ipr_halt_done(9)ipr_halt(9)ipr_init(9)ipr_exit(9)
look at that roster. that's the whole friend group right there ππ«Ά every one of them is invited to the function and they all showed up.
and that's the page!! πβ¨ this one lives in ./drivers/scsi, and it's dated October 2026 β so yeah, bookmark it, screenshot it, send it to the group chat, because future-you will absolutely want to find it again ππ«
π¦ 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