ata_scsi_translate(9)
Okay bestie, welcome to the ata_scsi_translate(9) page from the Kernel API Manual. π
This is where a SCSI command gets translated and sent on its way to an ATA device β but in a very structured, kernel-approved way. β¨
β¨ NAME β¨
ata_scsi_translateβ translate then issue SCSI command to ATA device π
π οΈ SYNOPSIS π οΈ
int ata_scsi_translate (struct ata_device *dev , struct scsi_cmnd *cmd ,
ata_xlat_func_t xlat_func , struct ata_port *ap );
That's the whole signature, no cap. π«Ά
π¬ ARGUMENTS π¬
devβ the ATA device to which the command is addressed πcmdβ the SCSI command to execute βxlat_funcβ the actor which translatescmdto an ATA taskfile π¦apβ the ATA port of interest πΈ
π DESCRIPTION π
Our ->queuecommand function has decided that the SCSI command issued can be directly translated into an ATA command, rather than handled internally. π
This function sets up an ata_queued_cmd structure for the SCSI command, and sends that ata_queued_cmd to the hardware. π
The xlat_func argument (actor) returns 0 if ready to execute ATA command, else 1 to finish translation. If 1 is returned then cmd->result (and possibly cmd->sense_buffer) are assumed to be set reflecting an error condition or clean (early) termination. β
LOCKING: spin_lock_irqsave(host lock) π
π RETURN π
0 on success, SCSI_ML_QUEUE_DEVICE_BUSY or SCSI_MLQUEUE_HOST_BUSY if the command needs to be deferred. That's the whole return vibe check. π
π SEE ALSO π
Kernel file ./drivers/ata/libata-scsi.c β go peek, bestie. π«Ά
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_rw_xlat(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)
Cute sign-off: source/version ./drivers/ata, dated October 2026. ππ
π¦ 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