ata_scsi_queuecmd(9)
π ata_scsi_queuecmd(9) β the Kernel API Manual glow-up π
okay bestie, so this is ata_scsi_queuecmd, straight out of section 9 of the kernel API manual, and it's basically the gluestick holding your SCSI vibes and your ATA hardware together. it's giving "matchmaker of the storage world" ngl π
β¨ NAME β¨
ata_scsi_queuecmd β Issue SCSI cdb to libata-managed device
like, you hand it a SCSI command and it gets it to a device that libata is babysitting. that's the whole eras tour. π¦
πΈ SYNOPSIS πΈ
enum scsi_qc_status ata_scsi_queuecmd (struct Scsi_Host *shost , struct scsi_cmnd *cmd );
π ARGUMENTS π
shostβ the SCSI host of the command you wanna send π« literally the host, that's it, that's the vibe.cmdβ the SCSI command you're sending. the actual main character here π
π DESCRIPTION π
okay so here's what's tea β:
in some cases, this function translates SCSI commands into ATA taskfiles, and queues those taskfiles up to be sent to the hardware. so it's a translator and a queue-runner. slay β¨
in other cases, this function simulates a SCSI device instead β it evaluates certain SCSI commands and responds to them itself. fake it till you make it, but make it legit π
put those two together and you get the overall effect: ATA and ATAPI devices appearing as SCSI devices. iykyk, that's the whole illusion, no cap π
LOCKING: ATA host lock π (yes bestie, this lock is not optional, respect it fr fr)
π«Ά RETURN π«Ά
Return value from __ata_scsi_queuecmd if cmd can be queued, 0 otherwise.
so like β queueable? you get whatever __ata_scsi_queuecmd hands back. not queueable? you get a big fat 0. that's the deal π
π§ SEE ALSO π§
Kernel file ./drivers/ata/libata-scsi.c β go read it, it's iconic β
and now the full squad, nobody left behind, periodt:
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_get_xlat_func(9)ata_scsi_simulate(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 page bestie π«Ά this lil drop came from ./drivers/ata and it's stamped October 2026 β write it down, cite it, live your truth π
π¦ 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