fc_exch_alloc(9)
β¨ fc_exch_alloc(9) β¨
okay bestie, welcome to the Kernel API Manual π
we're doing fc_exch_alloc(9) today and it's lowkey such a vibe β it's the lil' function that gets you a brand-new exchange (that's like, a Fibre Channel conversation slot, iykyk π¦).
π NAME π
fc_exch_alloc β allocate an exchange from an EM on a local port's list of EMs π
like, you're literally pulling an exchange out of an exchange manager, and the EM is hanging out on your local port's little list of EMs. that's the whole gig β¨
πΈ SYNOPSIS πΈ
struct fc_exch * fc_exch_alloc (struct fc_lport *lport , struct fc_frame
*fp );
she takes two args and hands you back a struct fc_exch * β no cap π«Ά
π ARGUMENTS π
lportβ the local port that will own the exchange π so like, whoever's adopting this exchange, it's this portfpβ the FC frame that the exchange will be for π the frame is the whole reason the exchange exists, she's just here to serve it
π₯ DESCRIPTION π₯
okay so here's the tea β this function walks the list of exchange manager (EM) anchors to select an EM for a new exchange allocation β¨
and how does it pick? literally two ways, periodt:
- the EM is selected when a
NULLmatch function pointer is encountered β like, no match function? cool, you're it, congrats π - the EM is selected when a call to a match function returns true π (fr fr, that's the vibe check passing)
that's it, that's the function. she walks, she picks, she slays π§
β SEE ALSO β
okay so this list is long long, but every single one of these is a real reference, so don't skip bestie π
Kernel file ./drivers/scsi/libfc/fc_exch.c π
struct fc_exch_pool(9)struct fc_exch_mgr(9)struct fc_exch_mgr_anchor(9)fc_exch_name_lookup(9)fc_exch_rctl_name(9)fc_exch_hold(9)fc_exch_setup_hdr(9)fc_exch_release(9)fc_exch_timer_cancel(9)fc_exch_timer_set_locked(9)fc_exch_timer_set(9)fc_exch_done_locked(9)fc_exch_ptr_get(9)fc_exch_ptr_set(9)fc_exch_delete(9)fc_seq_send(9)fc_seq_alloc(9)fc_seq_start_next_locked(9)fc_seq_start_next(9)fc_exch_abort_locked(9)fc_seq_exch_abort(9)fc_invoke_resp(9)fc_exch_timeout(9)fc_exch_em_alloc(9)fc_exch_find(9)fc_exch_done(9)fc_exch_resp(9)fc_seq_lookup_recip(9)fc_seq_lookup_orig(9)fc_exch_set_addr(9)fc_seq_els_rsp_send(9)fc_seq_send_last(9)fc_seq_send_ack(9)fc_exch_send_ba_rjt(9)fc_exch_recv_abts(9)fc_seq_assign(9)fc_seq_release(9)fc_exch_recv_req(9)fc_exch_recv_seq_resp(9)fc_exch_recv_resp(9)fc_exch_abts_resp(9)fc_exch_recv_bls(9)fc_seq_ls_acc(9)fc_seq_ls_rjt(9)fc_exch_reset(9)fc_exch_pool_reset(9)fc_exch_mgr_reset(9)fc_exch_lookup(9)fc_exch_els_rec(9)fc_exch_rrq_resp(9)fc_exch_seq_send(9)fc_exch_rrq(9)fc_exch_els_rrq(9)fc_exch_update_stats(9)fc_exch_mgr_add(9)fc_exch_mgr_destroy(9)fc_exch_mgr_del(9)fc_exch_mgr_list_clone(9)fc_exch_mgr_alloc(9)fc_exch_mgr_free(9)fc_find_ema(9)fc_exch_recv(9)fc_exch_init(9)fc_setup_exch_mgr(9)fc_destroy_exch_mgr(9)
bestie there's genuinely nothing dangerous in here, she's just picking an EM and handing you an exchange β but like, always read the SEE ALSO, the lore is deep π«Ά
and that's the page!! mwah π this one came from ./drivers/scsi/libfc and it's dated October 2026 β so she's serving future-fresh, iconic, no notes πβ¨πΈ
π¦ 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