lpfc_initialize_node(9)
π lpfc_initialize_node(9) β Kernel API Manual π
okay so bestie, welcome to the lpfc_initialize_node(9) page, which lives in the Kernel API Manual (yes that's the manual name, we're being fancy today β¨). This one is short and sweet and honestly kind of iconic β it's the "make the node object real" function. Let's go π«Ά
β¨ NAME β¨
lpfc_initialize_node β literally just initializes all fields of a node object. That's the whole job. Slay π
πΈ SYNOPSIS πΈ
void lpfc_initialize_node (struct lpfc_vport *vport , struct
lpfc_nodelist *ndlp , uint32_t did );
Look at that signature. Three args, returns void, no notes. It's giving "I do one thing and I do it well" energy π₯
π¦ ARGUMENTS π¦
vportβ Pointer to the Virtual Port object, bestie. The vport. You know the one πndlpβ Pointer to the FC node object β this is the node we're about to sprinkle magic on β¨didβ The FC_ID of the node. Just the ID, nothing more, no cap π
π DESCRIPTION π
This function is always called when a node object needs to be initialized β like, always always, no exceptions, that's the rule π. And what does it do? It initializes all the fields of the node object. Every single field. The whole glow-up. Periodt π
Now here's the tea on the phba situation, because it's lowkey important β Bestie, you could get the reference to phba from ndlp indirectly, by going through its reference to vport. But that's not what happens here β instead, ndlp takes a direct reference to phba right here in this function. Why? Because the life-span of the ndlp might go beyond the existence of vport π β the final release of ndlp is determined by its reference count, so it can outlive the vport, and the operations on ndlp need that phba reference to still be there. It's giving "I brought my own snacks to the party" fr fr π
Real talk: this is a lifetime-safety thing. Don't go thinking you can skip the directphbareference just becausevportis right there. Thendlpmight still be kicking when thevportis not. π
π SEE ALSO π
Kernel file ./drivers/scsi/lpfc/lpfc_hbadisc.c β that's where the magic lives, go read it, iykyk π
And now the whole friend group, in order, because we do not skip anyone in this house π«Ά
lpfc_check_inactive_vmid_one(9)lpfc_check_inactive_vmid(9)lpfc_check_nlp_post_devloss(9)lpfc_dev_loss_tmo_handler(9)lpfc_sli4_post_dev_loss_tmo_handler(9)lpfc_alloc_fast_evt(9)lpfc_free_fast_evt(9)lpfc_send_fastpath_evt(9)lpfc_sli4_clear_fcf_rr_bmask(9)lpfc_fab_name_match(9)lpfc_sw_name_match(9)lpfc_mac_addr_match(9)__lpfc_update_fcf_record_pri(9)lpfc_copy_fcf_record(9)__lpfc_update_fcf_record(9)lpfc_register_fcf(9)lpfc_match_fcf_conn_list(9)lpfc_check_pending_fcoe_event(9)lpfc_sli4_new_fcf_random_select(9)lpfc_sli4_fcf_rec_mbox_parse(9)lpfc_sli4_log_fcf_record_info(9)lpfc_sli4_fcf_record_match(9)lpfc_sli4_fcf_rr_next_proc(9)lpfc_sli4_fcf_pri_list_del(9)lpfc_sli4_set_fcf_flogi_fail(9)lpfc_sli4_fcf_pri_list_add(9)lpfc_mbx_cmpl_fcf_scan_read_fcf_rec(9)lpfc_mbx_cmpl_fcf_rr_read_fcf_rec(9)lpfc_mbx_cmpl_read_fcf_rec(9)lpfc_init_vfi_cmpl(9)lpfc_issue_init_vfi(9)lpfc_init_vpi_cmpl(9)lpfc_issue_init_vpi(9)lpfc_start_fdiscs(9)lpfc_create_static_vport(9)lpfc_issue_gidpt(9)lpfc_nlp_logo_unreg(9)lpfc_unreg_hba_rpis(9)lpfc_find_vport_by_vpid(9)lpfc_fcf_inuse(9)lpfc_unregister_vfi_cmpl(9)lpfc_unregister_fcfi_cmpl(9)lpfc_unregister_fcf_prep(9)lpfc_sli4_unregister_fcf(9)lpfc_unregister_fcf_rescan(9)lpfc_unregister_fcf(9)lpfc_unregister_unused_fcf(9)lpfc_read_fcf_conn_tbl(9)lpfc_read_fcoe_param(9)lpfc_get_rec_conf23(9)lpfc_parse_fcoe_conf(9)
Fifty-one whole besties. We love a thorough SEE ALSO, honestly π
and that's the page, bestie!! π this lil gem ships from ./drivers/scsi/lpfc, dated October 2026, and it's filed under lpfc_initialize_node(9) β so next time you need to initialize a node object you know exactly who to call πβ¨ bye ily π«Ά
π¦ 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