All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] ata: DSM TRIM fix and improvements
@ 2026-07-02 10:59 Niklas Cassel
  2026-07-02 10:59 ` [PATCH v3 1/2] ata: libata-scsi: fix DSM TRIM for sector sizes larger than 2048 bytes Niklas Cassel
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Niklas Cassel @ 2026-07-02 10:59 UTC (permalink / raw)
  To: Damien Le Moal; +Cc: linux-ide, Shaun Tancheff, Niklas Cassel

Hello all,

This fixes DSM TRIM for 4Kn devices, which has ironically been broken
since commit ef2d7392c4ec ("libata: SCT Write Same / DSM Trim"), which
claimed to correct the DSM TRIM handling for 4Kn devices.


The first commit is a small fix that can be backported, which limits
the DSM TRIM to what we currently report in the Block Limits VPD page.
We currently report a single 512 byte page of entries, i.e. 64 Entries,
where each entry has a maximum of U16_MAX logical blocks.

The second commit:
-Improves the support by reading the MAX PAGES PER DSM COMMAND limit and
 populates the Block Limits VPD page accordingly.
-Modifies ata_scsi_write_same_xlat() to properly support up to this amount
 of pages.
-Removed the intermediate copying to ata_scsi_rbuf, writes to the scsi
 buffer directly.

Practically, sd still caps n_block at SD_MAX_WS16_BLOCKS
(~3 pages actually used on 4Kn), so while removing the limit on
ATA_SCSI_RBUF_SIZE (2048) - i.e. 4 pages), we will still be limited
by SD_MAX_WS16_BLOCKS. The main improvement is not longer taking the
ata_scsi_rbuf_lock and doing and extra copy from ata_scsi_rbuf.


Changes since v2:
-Use min_not_zero() instead of min() to guard against a device reporting
 an invalid sector size.


Niklas Cassel (2):
  ata: libata-scsi: fix DSM TRIM for sector sizes larger than 2048 bytes
  ata: libata-scsi: scale DSM TRIM payload by MAX PAGES PER DSM COMMAND

 drivers/ata/libata-scsi.c | 137 ++++++++++++++++++++++++++------------
 include/linux/ata.h       |  13 ++++
 2 files changed, 108 insertions(+), 42 deletions(-)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-07-06  1:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-02 10:59 [PATCH v3 0/2] ata: DSM TRIM fix and improvements Niklas Cassel
2026-07-02 10:59 ` [PATCH v3 1/2] ata: libata-scsi: fix DSM TRIM for sector sizes larger than 2048 bytes Niklas Cassel
2026-07-02 10:59 ` [PATCH v3 2/2] ata: libata-scsi: scale DSM TRIM payload by MAX PAGES PER DSM COMMAND Niklas Cassel
2026-07-06  1:26 ` [PATCH v3 0/2] ata: DSM TRIM fix and improvements Damien Le Moal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.