STRUCT MPI3MR_SAS_NODE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct mpi3mr_sas_node(9) β€” the SAS host/expander glow-up ✨

okay so bestie, we're diving into the Linux Kernel API Manual, and this one is literally from the ./drivers/scsi/mpi3mr crew, dropped October 2026. it's giving "niche driver internals but make it iconic." buckle up πŸŽ€


🌸 NAME 🌸

struct mpi3mr_sas_node β€” SAS host/expander information, no cap. this struct is the main character when it comes to keeping track of your SAS nodes, and we're about to break down every single field like it's a group chat screenshot πŸ’…


✨ SYNOPSIS ✨

struct mpi3mr_sas_node {
    struct list_head list;
    struct device *parent_dev;
    u8 num_phys;
    u64 sas_address;
    u16 handle;
    u64 sas_address_parent;
    u16 enclosure_handle;
    u64 enclosure_logical_id;
    u8 non_responding;
    u8 host_node;
    struct mpi3mr_hba_port *hba_port;
    struct mpi3mr_sas_phy *phy;
    struct list_head sas_port_list;
    struct sas_rphy *rphy;
 };

πŸ¦‹ Members πŸ¦‹

okay so every field here is doing its own lil job and honestly? they all ate. let's go through them one by one, periodt:

  • list β€” List of sas nodes in a controller. think of it as the receipts of every sas node hangin' out in the controller. lowkey essential for keeping everyone accounted for πŸ’–
  • parent_dev β€” Parent device class. the parent device class, aka the one who raised it. main character energy for sure πŸ‘‘
  • num_phys β€” Number phys belonging to sas_node. literally just how many phys belong to this sas_node. no more, no less, we're counting πŸ”₯
  • sas_address β€” SAS address of sas_node. the SAS address of the sas_node β€” its whole identity, basically. iykyk πŸŽ€
  • handle β€” Firmware device handle for this sas_host/expander. the firmware device handle for this sas_host/expander. this is how the firmware knows who's who, fr fr 🫢
  • sas_address_parent β€” SAS address of parent expander or host. the SAS address of the parent expander or host. gotta know where you came from, bestie 😭
  • enclosure_handle β€” Firmware handle of enclosure of this node. the firmware handle of the enclosure of this node. very "your enclosure is showing" vibes πŸ’€
  • enclosure_logical_id β€” hmm, wait β€” this one isn't described in the original members list, but bestie, it's literally right there in the struct, so like… it exists, it's slaying, we support it πŸ“ (fr fr note: the original manpage lists enclosure_logical_id in the synopsis but gives no separate member description β€” so we're just acknowledging its presence, not inventing lore 🌈)
  • non_responding β€” used to refresh the expander devices during reset. this bad boy gets flagged when the expander is not answering and needs a refresh during reset. it's giving "seen but not replied" energy πŸ™ˆ
  • host_node β€” Flag to indicate this is a host_node. a flag that indicates this is a host_node. like a little badge that says "yes, I'm the host_node" ⭐
  • hba_port β€” HBA port entry. the HBA port entry. port life, port vibe, port everything πŸ’œ
  • phy β€” A list of phys that make up this sas_host/expander. a list of phys that make up this sas_host/expander. it's giving squad goals, honestly 🧚
  • sas_port_list β€” List of internal ports of this node. the list of internal ports of this node. internal affairs but make it sas πŸ’…
  • rphy β€” sas_rphy object of this expander node. the sas_rphy object of this expander node. iconic object, no notes πŸŽ€

πŸ”₯ SEE ALSO πŸ”₯

okay so if you want the full lore, you gotta check the kernel file ./drivers/scsi/mpi3mr/mpi3mr.h. the original page also name-drops a whole friend group of references, and we're listing every single one because we don't gatekeep bestie:

struct mpi3mr_nvme_pt_sge(9), struct mpi3mr_buf_map(9), struct mpi3mr_compimg_ver(9), struct segments(9), struct op_req_qinfo(9), struct op_reply_qinfo(9), struct mpi3mr_intr_info(9), struct mpi3mr_throttle_group_info(9), struct mpi3mr_hba_port(9), struct mpi3mr_sas_port(9), struct mpi3mr_sas_phy(9), struct mpi3mr_enclosure_node(9), struct tgt_dev_sas_sata(9), struct tgt_dev_pcie(9), struct tgt_dev_vd(9), union _form_spec_inf(9), struct mpi3mr_tgt_dev(9), mpi3mr_tgtdev_get(9), mpi3mr_free_tgtdev(9), mpi3mr_tgtdev_put(9), struct mpi3mr_stgt_priv_data(9), struct mpi3mr_drv_cmd(9), union mpi3mr_trigger_data(9), struct trigger_event_data(9), struct diag_buffer_desc(9), struct dma_memory_desc(9), struct chain_element(9), struct scmd_priv(9), struct mpi3mr_ioc(9), struct mpi3mr_fwevt(9), struct delayed_dev_rmhs_node(9), struct delayed_evt_ack_node(9)

like, that's the whole extended universe. go read them if you're curious, bestie. they're all slaying in their own way 🌟


and that's the tea! β˜• this page is from ./drivers/scsi/mpi3mr, dated October 2026, and the title is struct mpi3mr_sas_node(9). literally iconic, no cap. now go forth and configure your SAS nodes with confidence, bestie β€” you got this πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

πŸ“¦ where this page comes from