command-duration-limit · shipping · also Command Duration Limits, CDL, Device duration limit

Command duration limit

A command duration limit is a device-side policy selected by a descriptor index for supported storage commands.

Related Observatory article: Command duration limit on hesela.com

Linux v6.12 I/O-priority hints 1 through 7 select duration-limit descriptors on supporting ATA/SCSI devices when CDL is enabled. The hint is an index, not seconds, and is separate from scheduling class and priority level. [1]

The cdl_supported attribute reports capability; cdl_enable controls activation and is documented as off by default. In the v6.12 SCSI disk driver, sd_cdl_dld() selects zero unless support, activation and a valid request hint are all present. Enabling CDL alone does not assign every request a nonzero descriptor. [2] [3]

The descriptor and device contract determine the applicable policy. Its index alone does not specify the duration or establish a host deadline, final write outcome or durable completion. [4]

In Linux v6.12, ABORTED_COMMAND with ASC/ASCQ 2E/01-03 and COMPLETED with 55/0A both receive SCSIML_STAT_DL_TIMEOUT. SCSI suppresses retries for this classification; the internal SUCCESS return is not I/O success. [5]

The completion path maps that classification to BLK_STS_DURATION_LIMIT and then -ETIME, distinct from BLK_STS_TIMEOUT's -ETIMEDOUT. This source-level mapping does not promise unchanged errors at the application or rule out retries above SCSI. [6] [7]

Relations

related
error-recovery-control, io-timeout, scsi, sata

Citations

  1. Linux v6.12: include/uapi/linux/ioprio.h, device duration-limit hints. (accessed 2026-10-16)
  2. Linux v6.12: sysfs-block-device ABI, cdl_supported and cdl_enable. (accessed 2026-10-16)
  3. Linux v6.12: drivers/scsi/sd.c, sd_cdl_dld(). (accessed 2026-10-16)
  4. Hesela: Storage timeouts and uncertain completion (accessed 2026-10-16)
  5. Linux v6.12: scsi_check_sense() and scsi_noretry_cmd(). (accessed 2026-10-16)
  6. Linux v6.12: scsi_result_to_blk_status(). (accessed 2026-10-16)
  7. Linux v6.12: blk_errors[] and blk_status_to_errno(). (accessed 2026-10-16)
Sources & caveats

JSON: /data/terms/command-duration-limit.json