[PATCH 00/19] s390/dasd: ESE Performance improvements

Stefan Haberland <[email protected]> Wed, 5 Aug 2026 13:15:53 +0200
Newsgroups org.kernel.vger.linux-block,org.kernel.vger.linux-s390
Message-ID <[email protected]>
Hello Jens,

please apply the patch series for the upcoming merge window.
It applies onto your for-next branch.

The series significantly improves the performance and overall usability of
Extent Space Efficient (ESE, aka thin provisioned) DASD devices.

On a freshly provisioned ESE volume I get the following throughput
improvements, depending on workload and setup:

    workload                        change
    raw seq 1 MiB writes             ~53x
    fs bulk-load (xfs, buffered)     ~49x
    raw seq full-track (48k)        ~3.7x
    raw random 4k writes            ~1.3x
    control: fully-allocated vol      ~0% (no regression)
(fresh quick-formatted ESE volume, 4 jobs, iodepth 16, median of 3)

The first 4 patches are fixes for existing bugs in this area, afterwards
the infrastructure for and usage of Full Track Writes is added to the
driver as well as an improved collision detection. The other patches add
some tuning parameters and output as well as a new on disk format label.

FWIW: The series has been reviewed by Sashiko before. The remaining
findings are pre existing bugs that will be assessed and addressed
separately, false positives that are not a bug or not valid for ECKD
DASD devices, in-between-patch findings that are resolved at the tip
of the series, or accepted limitations.

Thanks,
Stefan

Stefan Haberland (19):
  s390/dasd: Do not complete a failed ESE read as successful
  s390/dasd: Propagate partial completion length across ERP recovery
  s390/dasd: Guard sysfs discipline callbacks against unallocated
    private data
  s390/dasd: Snapshot intrc before freeing the request block
  s390/dasd: Optimize max blocks per request for track alignment
  s390/dasd: Use GFP_KERNEL in dasd_alloc_device()
  s390/dasd: Add defines for the Extended Address Volume track address
  s390/dasd: Add infrastructure for ESE full-track write
  s390/dasd: Add range-based format-track collision detection
  s390/dasd: Extend prepare_itcw() to support WRITE_FULL_TRACK
  s390/dasd: Add dasd_eckd_build_cp_tpm_writefulltrack()
  s390/dasd: Use WRITE_FULL_TRACK in ESE format handler
  s390/dasd: Add full_track_bias to control fulltrack write mode
  s390/dasd: Derive adaptive ESE fulltrack heuristic from ft_bias
  s390/dasd: Stamp a format label into newly formatted volumes
  s390/dasd: Detect ESE volumes from the on-disk format label
  s390/dasd: Report ESE capability and format mode at device online
  s390/dasd: Re-enable discard support for ESE volumes
  s390/dasd: Read cached unit address and LSS in the CCW build path

 drivers/s390/block/dasd.c          |  242 ++++--
 drivers/s390/block/dasd_3990_erp.c |    1 +
 drivers/s390/block/dasd_devmap.c   |   90 +-
 drivers/s390/block/dasd_eckd.c     | 1263 +++++++++++++++++++++++++---
 drivers/s390/block/dasd_eckd.h     |   68 +-
 drivers/s390/block/dasd_erp.c      |   11 +-
 drivers/s390/block/dasd_int.h      |  149 +++-
 7 files changed, 1625 insertions(+), 199 deletions(-)

-- 
2.53.0