ata_get_xlat_func(9)
π
ata_get_xlat_func β the "can we even translate this SCSI thing?" check
okay so real talk, this whole page lives in the Kernel API Manual (that's the 9 in ata_get_xlat_func(9) babe, kernel-doc section, we love her) and it's basically the vibe-check bouncer at the door of libata's SCSI-to-ATA translation party. β¨
πΈ NAME πΈ
ata_get_xlat_func β check if SCSI to ATA translation is possible
π SYNOPSIS π
ata_xlat_func_t ata_get_xlat_func (struct ata_device *dev , u8 *cdb );
like, that's the whole signature bestie, ata_xlat_func_t in, struct ata_device *dev and u8 *cdb are the args, and yes there's a little space before the comma in cdb ); β that's just how the source rolls, iykyk π
π¦ ARGUMENTS π¦
devβ the ATA device in question, your main character of the moment πcdbβ the CDB of the SCSI command we're considering. literally just the command descriptor block of the SCSI command, handing it over for inspection π«Ά
β¨ DESCRIPTION β¨
so what actually happens: it looks up the SCSI command you gave it, and then determines whether that SCSI command is to be translated or simulated. that's the whole job. no cap, no extra steps, no side quests. π₯
think of it as the "do we have a translator for this or are we faking it" decision point. π
π RETURN π
Pointer to the translation function if possible β NULL if not. that's it, that's the answer. if you get NULL, it's giving "not today", and the SCSI command isn't getting a translation function from this call. π
π SEE ALSO π
first things first, the source file itself, right here:
- Kernel file
./drivers/ata/libata-scsi.cπ
and then the whole extended friend group, in exactly the order they showed up (yes I'm listing every single one, we don't do "etc." in this house π ):
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_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_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)
and that's the whole page bestie, go read the source, it's right there in ./drivers/ata πΈ
source/version: ./drivers/ata Β· date: October 2026 β mwah, that's the sign-off, ily, go translate some commands ππ«Άπ
π¦ 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