__lpfc_sli_release_iocbq_s4(9)
π __lpfc_sli_release_iocbq_s4(9) π
okay so bestie, welcome to the Kernel API Manual π β this is the page for __lpfc_sli_release_iocbq_s4(9), and honestly? it's giving "cursed kernel internals but make it cute." let's go β¨
πΈ NAME πΈ
__lpfc_sli_release_iocbq_s4 β Release iocb to the iocb pool π«Ά
π¦ SYNOPSIS π¦
void __lpfc_sli_release_iocbq_s4 (struct lpfc_hba *phba , struct
lpfc_iocbq *iocbq );
literally that's it. two args. she's simple, she's iconic π
π ARGUMENTS π
phbaβ Pointer to HBA context object. the main character of the whole driver ngl πiocbqβ Pointer to driver iocb object. the little guy getting released back home π
π DESCRIPTION π
so the whole point of this function is: it gets called to release the driver iocb object to the iocb pool. recycling era β»οΈβ¨
important vibe check: the iotag in the iocb object does not change for each use of the iocb object. she keeps her tag, always. no cap.
when the iocb object is freed, this function clears all other fields of it. like β¨factory resetβ¨ but only the fields, not the tag.
then there's the sqlq structure β and yeah, the page fr says sqlq, we're keeping it exactly like that, accuracy queen π β which holds the xritag and the phys and virtual mappings for the scatter gather list. it gets retrieved from the active array of sglq. and the get of the sglq pointer also clears the entry in the array. two birds, one slay π¦π¦
now, the branching, bestie, stay with me:
- if the status of the IO indicates that this IO was aborted, then the
sglqentry gets put on thelpfc_abts_els_sgl_listuntil theCQ_ABORTED_XRIis received. waiting room energy πͺ - if the IO has good status or fails for any other reason, then the
sglqentry is added to the free list (lpfc_els_sgl_list). back to the pool, she's free, she's thriving π¦
β οΈ and here's the big one: the hbalock is asserted held in the code path calling this routine. like, the caller is holding it. that's the deal. don't come for this function without your lock, bestie ππ
π SEE ALSO π
Kernel file ./drivers/scsi/lpfc/lpfc_sli.c, plus the entire extended universe of homies β yes, we're listing all of them, every single one, no skips, we don't do that here π«Ά:
lpfc_sli4_pcimem_bcopy(9), lpfc_sli4_wq_put(9), lpfc_sli4_wq_release(9), lpfc_sli4_mq_put(9), lpfc_sli4_mq_release(9), lpfc_sli4_eq_get(9), lpfc_sli4_eq_clr_intr(9), lpfc_sli4_if6_eq_clr_intr(9), lpfc_sli4_write_eq_db(9), lpfc_sli4_if6_write_eq_db(9), lpfc_sli4_cq_get(9), lpfc_sli4_write_cq_db(9), lpfc_sli4_if6_write_cq_db(9), lpfc_cmd_iocb(9), lpfc_resp_iocb(9), __lpfc_sli_get_iocbq(9), __lpfc_clear_active_sglq(9), __lpfc_get_active_sglq(9), lpfc_clr_rrq_active(9), lpfc_handle_rrq_active(9), lpfc_get_active_rrq(9), lpfc_cleanup_vports_rrqs(9), lpfc_test_rrq_active(9), lpfc_set_rrq_active(9), __lpfc_sli_get_els_sglq(9), __lpfc_sli_get_nvmet_sglq(9), lpfc_sli_get_iocbq(9), __lpfc_sli_release_iocbq_s3(9), __lpfc_sli_release_iocbq(9), lpfc_sli_release_iocbq(9), lpfc_sli_cancel_iocbs(9), lpfc_sli_iocb_cmd_type(9), lpfc_sli_ring_map(9), lpfc_sli_ringtxcmpl_put(9), lpfc_sli_ringtx_get(9), lpfc_cmf_sync_cmpl(9), lpfc_issue_cmf_sync_wqe(9), lpfc_sli_next_iocb_slot(9), lpfc_sli_next_iotag(9), lpfc_sli_submit_iocb(9), lpfc_sli_update_full_ring(9), lpfc_sli_update_ring(9), lpfc_sli_resume_iocb(9), lpfc_sli_next_hbq_slot(9), lpfc_sli_hbqbuf_free_all(9), lpfc_sli_hbq_to_firmware(9), lpfc_sli_hbq_to_firmware_s3(9), lpfc_sli_hbq_to_firmware_s4(9), lpfc_sli_hbqbuf_fill_hbqs(9), lpfc_sli_hbqbuf_add_hbqs(9), lpfc_sli_hbqbuf_init_hbqs(9), lpfc_sli_rqbuf_get(9), lpfc_sli_hbqbuf_find(9), lpfc_sli_free_hbq(9), lpfc_sli_chk_mbx_command(9), lpfc_sli_wake_mbox_wait(9), lpfc_sli_def_mbox_cmpl(9), lpfc_sli_handle_mb_event(9), lpfc_sli_get_buff(9), lpfc_nvme_unsol_ls_handler(9), lpfc_complete_unsol_iocb(9), lpfc_sli_process_unsol_iocb(9), lpfc_sli_iocbq_lookup(9), lpfc_sli_iocbq_lookup_by_tag(9), lpfc_sli_process_sol_iocb(9), lpfc_sli_rsp_pointers_error(9), lpfc_poll_eratt(9), lpfc_sli_handle_fast_ring_event(9), lpfc_sli_sp_handle_rspiocb(9), lpfc_sli_handle_slow_ring_event(9), lpfc_sli_handle_slow_ring_event_s3(9), lpfc_sli_handle_slow_ring_event_s4(9), lpfc_sli_abort_iocb_ring(9), lpfc_sli_abort_fcp_rings(9), lpfc_sli_flush_io_rings(9), lpfc_sli_brdready_s3(9), lpfc_sli_brdready_s4(9), lpfc_sli_brdready(9), lpfc_reset_barrier(9), lpfc_sli_brdkill(9), lpfc_sli_brdreset(9), lpfc_sli4_brdreset(9), lpfc_sli_brdrestart_s3(9), lpfc_sli_brdrestart_s4(9), lpfc_sli_brdrestart(9), lpfc_sli_chipset_init(9), lpfc_sli_hbq_count(9), lpfc_sli_hbq_entry_count(9), lpfc_sli_hbq_size(9), lpfc_sli_hbq_setup(9), lpfc_sli4_rb_setup(9), lpfc_sli_config_port(9), lpfc_sli_hba_setup(9), lpfc_sli4_read_fcoe_params(9), lpfc_sli4_read_rev(9), lpfc_sli4_get_ctl_attr(9), lpfc_sli4_retrieve_pport_name(9), lpfc_sli4_arm_cqeq_intr(9), lpfc_sli4_get_avail_extnt_rsrc(9), lpfc_sli4_chk_avail_extnt_rsrc(9), lpfc_sli4_cfg_post_extnts(9), lpfc_sli4_alloc_extent(9), lpfc_sli4_dealloc_extent(9), lpfc_ras_stop_fwlog(9), lpfc_sli4_ras_dma_free(9), lpfc_sli4_ras_dma_alloc(9), lpfc_sli4_ras_mbox_cmpl(9), lpfc_sli4_ras_fwlog_init(9), lpfc_sli4_ras_setup(9), lpfc_sli4_alloc_resource_identifiers(9), lpfc_sli4_dealloc_resource_identifiers(9), lpfc_sli4_get_allocated_extnts(9), lpfc_sli4_repost_sgl_list(9), lpfc_sli4_repost_io_sgl_list(9), lpfc_init_idle_stat_hb(9), lpfc_rx_monitor_create_ring(9), lpfc_rx_monitor_destroy_ring(9), lpfc_rx_monitor_record(9), lpfc_rx_monitor_report(9), lpfc_cmf_setup(9), lpfc_get_platform_uuid(9), lpfc_sli4_hba_setup(9), lpfc_mbox_timeout(9), lpfc_sli4_mbox_completions_pending(9), lpfc_sli4_process_missed_mbox_completions(9), lpfc_mbox_timeout_handler(9), lpfc_sli_issue_mbox_s3(9), lpfc_sli4_async_mbox_block(9), lpfc_sli4_async_mbox_unblock(9), lpfc_sli4_wait_bmbx_ready(9), lpfc_sli4_post_sync_mbox(9), lpfc_sli_issue_mbox_s4(9), lpfc_sli4_post_async_mbox(9), lpfc_sli_issue_mbox(9), lpfc_mbox_api_table_setup(9), __lpfc_sli_ringtx_put(9), lpfc_sli_next_iocb(9), __lpfc_sli_issue_iocb_s3(9), __lpfc_sli_issue_fcp_io_s3(9), __lpfc_sli_issue_fcp_io_s4(9), __lpfc_sli_issue_iocb_s4(9), lpfc_sli_api_table_setup(9), lpfc_sli4_calc_ring(9), lpfc_sli_issue_iocb(9), lpfc_extra_ring_setup(9), lpfc_sli_async_event_handler(9), lpfc_sli4_setup(9), lpfc_sli_setup(9), lpfc_sli4_queue_init(9), lpfc_sli_queue_init(9), lpfc_sli_mbox_sys_flush(9), lpfc_sli_host_down(9), lpfc_sli_hba_down(9), lpfc_sli_pcimem_bcopy(9), lpfc_sli_bemem_bcopy(9), lpfc_sli_ringpostbuf_put(9), lpfc_sli_get_buffer_tag(9), lpfc_sli_ring_taggedbuf_get(9), lpfc_sli_ringpostbuf_get(9), lpfc_sli_abort_els_cmpl(9), lpfc_ignore_els_cmpl(9), lpfc_sli_issue_abort_iotag(9), lpfc_sli_hba_iocb_abort(9), lpfc_sli_validate_fcp_iocb_for_abort(9), lpfc_sli_validate_fcp_iocb(9), lpfc_sli_sum_iocb(9), lpfc_sli_abort_fcp_cmpl(9), lpfc_sli_abort_iocb(9), lpfc_sli_abort_taskmgmt(9), lpfc_sli_wake_iocb_wait(9), lpfc_chk_iocb_flg(9), lpfc_sli_issue_iocb_wait(9), lpfc_sli_issue_mbox_wait(9), lpfc_sli_mbox_sys_shutdown(9), lpfc_sli_eratt_read(9), lpfc_sli4_eratt_read(9), lpfc_sli_check_eratt(9), lpfc_intr_state_check(9), lpfc_sli_sp_intr_handler(9), lpfc_sli_fp_intr_handler(9), lpfc_sli_intr_handler(9), lpfc_sli4_els_xri_abort_event_proc(9), lpfc_sli4_els_preprocess_rspiocbq(9), lpfc_sli4_sp_handle_async_event(9), lpfc_sli4_sp_handle_mbox_event(9), lpfc_sli4_sp_handle_mcqe(9), lpfc_sli4_sp_handle_els_wcqe(9), lpfc_sli4_sp_handle_rel_wcqe(9), lpfc_sli4_sp_handle_abort_xri_wcqe(9), lpfc_sli4_sp_handle_rcqe(9), lpfc_sli4_sp_handle_cqe(9), lpfc_sli4_sp_handle_eqe(9), __lpfc_sli4_process_cq(9), __lpfc_sli4_sp_process_cq(9), lpfc_sli4_sp_process_cq(9), lpfc_sli4_dly_sp_process_cq(9), lpfc_sli4_fp_handle_fcp_wcqe(9), lpfc_sli4_fp_handle_rel_wcqe(9), lpfc_sli4_nvmet_handle_rcqe(9), lpfc_sli4_fp_handle_cqe(9), __lpfc_sli4_hba_process_cq(9), lpfc_sli4_hba_process_cq(9), lpfc_sli4_hba_handle_eqe(9), lpfc_sli4_dly_hba_process_cq(9), lpfc_sli4_hba_intr_handler(9), lpfc_sli4_intr_handler(9), lpfc_sli4_queue_free(9), lpfc_sli4_queue_alloc(9), lpfc_dual_chute_pci_bar_map(9), lpfc_modify_hba_eq_delay(9), lpfc_eq_create(9), lpfc_sli4_hba_intr_handler_th(9), lpfc_cq_create(9), lpfc_cq_create_set(9), lpfc_mq_create_fb_init(9), lpfc_mq_create(9), lpfc_wq_create(9), lpfc_rq_create(9), lpfc_mrq_create(9), lpfc_eq_destroy(9), lpfc_cq_destroy(9), lpfc_mq_destroy(9), lpfc_wq_destroy(9), lpfc_rq_destroy(9), lpfc_sli4_post_sgl(9), lpfc_sli4_alloc_xri(9), __lpfc_sli4_free_xri(9), lpfc_sli4_free_xri(9), lpfc_sli4_next_xritag(9), lpfc_sli4_post_sgl_list(9), lpfc_sli4_post_io_sgl_block(9), lpfc_sli4_post_io_sgl_list(9), lpfc_fc_frame_check(9), lpfc_fc_hdr_get_vfi(9), lpfc_fc_frame_to_vport(9), lpfc_update_rcv_time_stamp(9), lpfc_cleanup_rcv_buffers(9), lpfc_rcv_seq_check_edtov(9), lpfc_fc_frame_add(9), lpfc_sli4_abort_partial_seq(9), lpfc_sli4_abort_ulp_seq(9), lpfc_sli4_seq_abort_rsp_cmpl(9), lpfc_sli4_xri_inrange(9), lpfc_sli4_seq_abort_rsp(9), lpfc_sli4_handle_unsol_abort(9), lpfc_seq_complete(9), lpfc_prep_seq(9), lpfc_sli4_handle_received_buffer(9), lpfc_sli4_post_all_rpi_hdrs(9), lpfc_sli4_post_rpi_hdr(9), lpfc_sli4_alloc_rpi(9), __lpfc_sli4_free_rpi(9), lpfc_sli4_free_rpi(9), lpfc_sli4_remove_rpis(9), lpfc_sli4_resume_rpi(9), lpfc_sli4_init_vpi(9), lpfc_mbx_cmpl_add_fcf_record(9), lpfc_sli4_add_fcf_record(9), lpfc_sli4_build_dflt_fcf_record(9), lpfc_sli4_fcf_scan_read_fcf_rec(9), lpfc_sli4_fcf_rr_read_fcf_rec(9), lpfc_sli4_read_fcf_rec(9), lpfc_check_next_fcf_pri_level(9), lpfc_sli4_fcf_rr_next_index_get(9), lpfc_sli4_fcf_rr_index_set(9), lpfc_sli4_fcf_rr_index_clear(9), lpfc_mbx_cmpl_redisc_fcf_table(9), lpfc_sli4_redisc_fcf_table(9), lpfc_sli4_fcf_dead_failthrough(9), lpfc_sli_get_config_region23(9), lpfc_sli4_get_config_region23(9), lpfc_sli_read_link_ste(9), lpfc_log_fw_write_cmpl(9), lpfc_wr_object(9), lpfc_cleanup_pending_mbox(9), lpfc_drain_txq(9), lpfc_wqe_bpl2sgl(9), lpfc_sli4_issue_wqe(9), lpfc_sli4_issue_abort_iotag(9), lpfc_snapshot_mxp(9), lpfc_adjust_pvt_pool_count(9), lpfc_adjust_high_watermark(9), lpfc_move_xri_pvt_to_pbl(9), _lpfc_move_xri_pbl_to_pvt(9), lpfc_move_xri_pbl_to_pvt(9), lpfc_keep_pvt_pool_above_lowwm(9), lpfc_release_io_buf(9), lpfc_get_io_buf_from_private_pool(9), lpfc_get_io_buf_from_expedite_pool(9), lpfc_get_io_buf_from_multixri_pools(9), lpfc_get_io_buf(9), lpfc_read_object(9), lpfc_get_sgl_per_hdwq(9), lpfc_put_sgl_per_hdwq(9), lpfc_free_sgl_per_hdwq(9), lpfc_get_cmd_rsp_buf_per_hdwq(9), lpfc_put_cmd_rsp_buf_per_hdwq(9), lpfc_free_cmd_rsp_buf_per_hdwq(9), lpfc_sli_prep_wqe(9)
that's the whole friend group fr fr π
π and that's the page, bestie! brought to you by the source<pink>./drivers/scsi/lpfc</pink>, version dated October 2026 β go forth and release those iocbs responsibly π β¨π
π¦ 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