STRUCT _SCSI_IO_TRANSFER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ struct _scsi_io_transfer πŸŽ€

okay bestie, buckle up β€” this is the Kernel API Manual page for struct _scsi_io_transfer, and it's giving "the data structure that makes the whole SCSI conversation happen" ✨ no cap.


πŸ’– NAME πŸ’–

struct _scsi_io_transfer β€” scsi io transfer. that's it, that's the name, and honestly it ate πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole struct, copied exactly, don't touch a single character or the compiler WILL come for you:

struct _scsi_io_transfer {
    u16 handle;
    u8 is_raid;
    enum dma_data_direction dir;
    u32 data_length;
    dma_addr_t data_dma;
    u8 sense[SCSI_SENSE_BUFFERSIZE];
    u32 lun;
    u8 cdb_length;
    u8 cdb[32];
    u8 timeout;
    u8 VF_ID;
    u8 VP_ID;
    u8 valid_reply;
    u32 sense_length;
    u16 ioc_status;
    u8 scsi_state;
    u8 scsi_status;
    u32 log_info;
    u32 transfer_length;
 };

🌸 Members 🌸

okay so every single field, one by one, because we do not skip members in this house πŸ‘‘

  • handle β€” the sas device handle (the firmware hands you this one, you don't make it up yourself)
  • is_raid β€” a flag that gets set for hidden raid components πŸ‘€ sneaky lil guys
  • dir β€” the DMA direction: DMA_TO_DEVICE, DMA_FROM_DEVICE, (yes, it's listed with a trailing comma in the original, we're keeping it, it's part of the vibe)
  • data_length β€” the data transfer length
  • data_dma β€” the dma pointer to the data
  • sense β€” sense data. it's a buffer, SCSI_SENSE_BUFFERSIZE big, and it knows things
  • lun β€” the lun number
  • cdb_length β€” the cdb length
  • cdb β€” the cdb contents (32 bytes of pure intent)
  • timeout β€” the timeout for this command, so it doesn't just hang forever being dramatic 😭
  • VF_ID β€” the virtual function id
  • VP_ID β€” the virtual port id
  • valid_reply β€” a flag that gets set for a reply message
  • sense_length β€” the sense length
  • ioc_status β€” the ioc status
  • scsi_state β€” the scsi state
  • scsi_status β€” the scsi staus 🫢 (that's literally how it's spelled in the source, we do not editorialize, we just report)
  • log_info β€” log information
  • transfer_length β€” the data length transfer when there's a reply message, iykyk

✨ Description ✨

so what is this thing for? literally this: it's used for sending internal scsi commands to devices within this module πŸ”₯

if you wanna know more, go refer to _scsi_send_scsi_io β€” that's the whole rec, bestie, the manpage said it, not me πŸ’œ


🌈 SEE ALSO 🌈

buckle up babes, this list is iconic and also lowkey a whole novel. every single one, in order, no skipping:


bestie real talk: this thing is only for sending internal scsi commands to devices within this module, k? it's not a public playground, it's an in-module situation, and the manpage said so 🫢

okay that's the whole page, you survived, I'm so proud of you πŸ˜­πŸ’– this little gem lives down in ./drivers/scsi/mpt3sas, dated October 2026 β€” go forth and slay, and remember: the struct is the moment, the firmware assigns the handle, periodt πŸ’…βœ¨

πŸ“¦ where this page comes from