diff options
| author | Hugo Deco <hugodeco@sufficit.com.br> | 2026-11-03 10:12:04 -0800 |
|---|---|---|
| committer | Keith Busch <kbusch@kernel.org> | 2026-11-04 07:51:11 -0800 |
| commit | f4ae106069982da3e36293d8e627cb9a540034a0 (patch) | |
| tree | a33042d6922f15667f0a8d75be7d7508a8c9ed81 /tools/perf/scripts/python/parallel-perf.py | |
| parent | 1ac7efbea82562f4b1eded4de7cb37540061fb05 (diff) | |
nvme-pci: add NO_FUA quirk for ADATA XPG GAMMIX S70 BLADE
On the ADATA XPG GAMMIX S70 BLADE (PCI 1cc1:5370, firmware 03020P5E)
every Write with the FUA bit set takes 200, 400 or 600 ms to complete,
always a multiple of ~200 ms, while a plain Write completes in
0.0-0.4 ms and a Flush in ~1.3 ms. Tracing nvme_setup_cmd and
nvme_complete_rq shows the whole delay is between submission and
completion, i.e. inside the device (e.g. FUA write, control 0x4000:
598.3 ms).
Because ext4/jbd2 issue FUA for every journal commit, fsync() on this
drive stalls for 250-890 ms and desktop applications freeze.
Add NVME_QUIRK_NO_FUA, which stops advertising BLK_FEAT_FUA while
keeping the volatile write cache enabled, so the block layer emulates
FUA with a Write followed by a Flush. Durability semantics are
unchanged. Apply it to the S70 BLADE through nvme_id_table.
With the quirk applied, 4 KiB O_DIRECT|O_DSYNC writes and
create+write+fsync drop from 250-890 ms to a 0.82-0.85 ms median
(30 samples, two partitions on the same drive).
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Hugo Deco <hugodeco@sufficit.com.br>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/parallel-perf.py')
0 files changed, 0 insertions, 0 deletions
