lpfc_used_vpi_show(9)
π lpfc_used_vpi_show(9) β Kernel API Manual β¨
okay so bestie, this is a page straight out of the Kernel API Manual and it's lowkey iconic β it's all about lpfc_used_vpi_show, which returns the max vpi minus the available vpi. math queen behavior honestly π
πΈ NAME πΈ
lpfc_used_vpi_show β Return maximum vpi minus the available vpi π
β¨ SYNOPSIS β¨
ssize_t lpfc_used_vpi_show (struct device *dev , struct device_attribute
*attr , char *buf );
π¦ ARGUMENTS π¦
devβ the class device that gets converted into a Scsi_host. it's giving main character energy, literally the whole point of the call π«Άattrβ the device attribute. not used. she's just there for the vibe check, no cap πbufβ on return this contains the used vpi count in decimal, or the string"Unknown". so either a cute little number or a mystery π
π DESCRIPTION π
So what actually happens? It calls lpfc_get_hba_info asking for just the mvpi and avpi counts β that's it, that's the whole ask, keep it focused bestie β
Here's the plot twist though: if lpfc_get_hba_info returns zero (that's a failure), the buffer text gets set to "Unknown" and the buffer length is returned. so yeah π the caller must check for "Unknown" in the buffer to detect a failure. don't skip that check, i'm literally begging π«Ά
Lowkey important: the failure signal lives inside the buffer, not in the return value. check your buffer, bestie. periodt. π
π RETURN π
size of formatted string. that's the return value, slay β¨
π§ SEE ALSO π§
Kernel file ./drivers/scsi/lpfc/lpfc_attr.c
lpfc_jedec_to_ascii(9)lpfc_drvr_version_show(9)lpfc_enable_fip_show(9)lpfc_info_show(9)lpfc_serialnum_show(9)lpfc_temp_sensor_show(9)lpfc_modeldesc_show(9)lpfc_modelname_show(9)lpfc_programtype_show(9)lpfc_vportnum_show(9)lpfc_fwrev_show(9)lpfc_hdw_show(9)lpfc_option_rom_version_show(9)lpfc_link_state_show(9)lpfc_sli4_protocol_show(9)lpfc_oas_supported_show(9)lpfc_link_state_store(9)lpfc_num_discovered_ports_show(9)lpfc_issue_lip(9)lpfc_do_offline(9)lpfc_reset_pci_bus(9)lpfc_selective_reset(9)lpfc_issue_reset(9)lpfc_sli4_pdev_status_reg_wait(9)lpfc_sli4_pdev_reg_request(9)lpfc_nport_evt_cnt_show(9)lpfc_board_mode_show(9)lpfc_board_mode_store(9)lpfc_get_hba_info(9)lpfc_max_rpi_show(9)lpfc_used_rpi_show(9)lpfc_max_xri_show(9)lpfc_used_xri_show(9)lpfc_max_vpi_show(9)lpfc_npiv_info_show(9)lpfc_poll_show(9)lpfc_poll_store(9)lpfc_sriov_hw_max_virtfn_show(9)lpfc_enable_bbcr_set(9)lpfc_wwn_set(9)lpfc_oas_tgt_show(9)lpfc_oas_tgt_store(9)lpfc_oas_priority_show(9)lpfc_oas_priority_store(9)lpfc_oas_vpt_show(9)lpfc_oas_vpt_store(9)lpfc_oas_lun_state_show(9)lpfc_oas_lun_state_store(9)lpfc_oas_lun_status_show(9)lpfc_oas_lun_state_set(9)lpfc_oas_lun_get_next(9)lpfc_oas_lun_state_change(9)lpfc_oas_lun_show(9)lpfc_oas_lun_store(9)lpfc_nodev_tmo_show(9)lpfc_nodev_tmo_init(9)lpfc_update_rport_devloss_tmo(9)lpfc_nodev_tmo_set(9)lpfc_devloss_tmo_set(9)lpfc_tgt_queue_depth_set(9)lpfc_restrict_login_init(9)lpfc_restrict_login_set(9)lpfc_topology_store(9)lpfc_static_vport_show(9)lpfc_link_speed_store(9)lpfc_link_speed_init(9)lpfc_aer_support_store(9)lpfc_aer_cleanup_state(9)lpfc_sriov_nr_virtfn_store(9)lpfc_request_firmware_upgrade_store(9)lpfc_request_firmware_upgrade_init(9)lpfc_force_rscn_store(9)lpfc_force_rscn_init(9)lpfc_fcp_imax_store(9)lpfc_fcp_imax_init(9)lpfc_cq_max_proc_limit_store(9)lpfc_cq_max_proc_limit_init(9)lpfc_fcp_cpu_map_show(9)lpfc_fcp_cpu_map_store(9)lpfc_fcp_cpu_map_init(9)lpfc_cpumask_irq_mode_init(9)lpfc_irq_chann_show(9)lpfc_sg_seg_cnt_show(9)lpfc_sg_seg_cnt_init(9)sysfs_ctlreg_write(9)sysfs_ctlreg_read(9)sysfs_mbox_write(9)sysfs_mbox_read(9)lpfc_alloc_sysfs_attr(9)lpfc_free_sysfs_attr(9)lpfc_get_host_symbolic_name(9)lpfc_get_host_port_id(9)lpfc_get_host_port_type(9)lpfc_get_host_port_state(9)lpfc_get_host_speed(9)lpfc_get_host_fabric_name(9)lpfc_get_stats(9)lpfc_reset_stats(9)lpfc_get_enc_info(9)lpfc_get_node_by_target(9)lpfc_get_starget_port_id(9)lpfc_get_starget_node_name(9)lpfc_get_starget_port_name(9)lpfc_set_rport_loss_tmo(9)lpfc_set_vport_symbolic_name(9)lpfc_hba_log_verbose_init(9)lpfc_get_hba_function_mode(9)lpfc_get_cfgparam(9)lpfc_nvme_mod_param_dep(9)lpfc_get_vport_cfgparam(9)
and that's the whole page, bestie β go forth and check that buffer for "Unknown" π
mwah π this came from the kernel source tree at ./drivers/scsi/lpfc, version vibes dated October 2026 β catch you in the next manpage, 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