ata_format_dsm_trim_descr(9)
okay bestie, this is ata_format_dsm_trim_descr(9) from the Kernel API Manual β yes, the manual name is right there, and the whole page is giving kernel-helper main character energy. let's go π
β¨
π NAME π
ata_format_dsm_trim_descr β SATL Write Same to DSM Trim β¨
β¨ SYNOPSIS β¨
here's the signature, bestie, and yes it's exactly this:
size_t ata_format_dsm_trim_descr (struct scsi_cmnd *cmd , size_t size ,
u64 sector , u32 count );
πΈ ARGUMENTS πΈ
cmdβ SCSI command being translated. it's the thing getting the translation glow-up πsizeβ DSM TRIM payload size in bytes (a multiple of512). literally a multiple of512, okay? β¨sectorβ Starting sector. the starting point of the whole saga π¬countβ Total Range of request in logical sectors. capital R, official business π
π¦ DESCRIPTION π¦
Okay so the job is: rewrite the WRITE SAME descriptor to be a DSM TRIM little-endian formatted descriptor. it's giving "same descriptor, new format" and honestly? slay π
The payload is a list of size / 8 entries of the format: 63:48 Range Length 47:0 LBA.
Range Length of 0 is ignored. LBA's should be sorted order and not overlap β no messy overlapping LBAs, bestie, that's not the vibe π«
π NOTE π
this is the same format as ADD LBA(S) TO NV CACHE PINNED SET. iykyk β¨
The descriptor is written straight into the WRITE SAME data-out buffer; ata_dsm_trim_pages guarantees size does not exceed that buffer (one logical block). An atomic sg_miter mapping is used so this works from the command submission path and, unlike page_address, copes with a high memory payload. that's the little technical moment and it ate π₯
π«Ά RETURN π«Ά
Number of bytes written into the data-out buffer. that's the return, periodt π
π SEE ALSO π
Kernel file ./drivers/ata/libata-scsi.c, plus the whole group chat:
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_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)
xoxo, your kernel bestie π β from ./drivers/ata, October 2026, ata_format_dsm_trim_descr(9), byeeeeee π
π¦ 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