ata_scsi_rw_xlat(9)
π ata_scsi_rw_xlat β the Kernel API Manual glow-up π
okay so bestie, welcome to ata_scsi_rw_xlat(9), like the actual manual page for it, and honestly? it's giving "small function, big responsibilities" and i'm obsessed π
β¨ NAME β¨
ata_scsi_rw_xlat β translate SCSI r/w command into an ATA one π¦
like⦠the whole job is literally in the name. no notes. icon behavior.
πΈ SYNOPSIS πΈ
unsigned int ata_scsi_rw_xlat (struct ata_queued_cmd *qc );
that's it. one function, one argument, zero drama (mostly) β¨
π ARGUMENTS π
qcβ storage for the translated ATA taskfile. this is where the translated goodness gets parked π«Ά
π DESCRIPTION π
okay so the whole vibe here: this function converts any of six SCSI read/write commands into their ATA counterpart π and it's not just "swap the opcode and hope" β it also handles the starting sector (LBA), the sector count, and it takes into account the device's LBA48 support. like yes, it checked whether your device can even do the big-LBA thing before going off. main character energy fr π₯
the six commands that are currently supported:
READ_6READ_10READ_16WRITE_6WRITE_10WRITE_16
that's the whole guest list. six baddies. no cap π
LOCKING: spin_lock_irqsave(host lock) β yes bestie, it's holding the host lock. respect the lock or get humbled π
β RETURN β
Zero on success, non-zero on error. classic. we love a binary outcome π
π§ SEE ALSO π§
first, the kernel file, exactly as it's written:
Kernel file ./drivers/ata/libata-scsi.c
and nowβ¦ the entire β¨libata extended universeβ¨ β every single one of these, no skipping, i promised:
ata_scsi_set_passthru_sense_fields(9), ata_std_bios_param(9),
ata_scsi_unlock_native_capacity(9), ata_get_identity(9),
ata_cmd_ioctl(9), ata_task_ioctl(9), ata_scsi_qc_new(9),
ata_to_sense_error(9), ata_gen_ata_sense(9), ata_scsi_dma_need_drain(9),
ata_scsi_sdev_init(9), ata_scsi_sdev_configure(9),
ata_scsi_sdev_destroy(9), ata_scsi_start_stop_xlat(9),
ata_scsi_flush_xlat(9), scsi_6_lba_len(9), scsi_10_lba_len(9),
scsi_16_lba_len(9), scsi_dld(9), ata_scsi_verify_xlat(9),
ata_scsi_translate(9), ata_scsi_rbuf_fill(9), ata_scsiop_inq_std(9),
ata_scsiop_inq_00(9), ata_scsiop_inq_80(9), ata_scsiop_inq_83(9),
ata_scsiop_inq_89(9), ata_dsm_trim_pages(9), ata_scsiop_inq_b0(9),
ata_scsiop_inq_b1(9), ata_scsiop_inq_b2(9), ata_scsiop_inq_b6(9),
ata_scsiop_inq_b9(9), ata_scsiop_inquiry(9), modecpy(9),
ata_msense_caching(9), ata_msense_control(9), ata_msense_rw_recovery(9),
ata_scsiop_mode_sense(9), ata_scsiop_read_cap(9),
ata_scsiop_report_luns(9), atapi_xlat(9), ata_scsi_find_dev(9),
ata_scsi_pass_thru(9), ata_format_dsm_trim_descr(9),
ata_scsi_write_same_xlat(9), ata_scsiop_maint_in(9),
ata_scsi_report_zones_complete(9), ata_mselect_caching(9),
ata_mselect_control(9), ata_scsi_mode_select_xlat(9),
ata_scsi_var_len_cdb_xlat(9), ata_get_xlat_func(9),
ata_scsi_simulate(9), ata_scsi_queuecmd(9), ata_scsi_offline_dev(9),
ata_scsi_remove_dev(9), ata_scsi_media_change_notify(9),
ata_scsi_hotplug(9), ata_scsi_user_scan(9), ata_scsi_dev_rescan(9)
like, that's a whole friend group π everyone showed up to the group chat.
and that's the page!! mwah π this little summary lives in ./drivers/ata, and it's stamped October 2026, from the Kernel API Manual β so when you cite it, cite it cute π iykyk π
π¦ 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