Command duration limit
A command duration limit is a device-side policy selected by a descriptor index for supported storage commands.
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
- Linux v6.12: include/uapi/linux/ioprio.h, device duration-limit hints.
- Linux v6.12: sysfs-block-device ABI, cdl_supported and cdl_enable.
- Linux v6.12: drivers/scsi/sd.c, sd_cdl_dld().
- Hesela: Storage timeouts and uncertain completion
- Linux v6.12: scsi_check_sense() and scsi_noretry_cmd().
- Linux v6.12: scsi_result_to_blk_status().
- Linux v6.12: blk_errors[] and blk_status_to_errno().
Sources & caveats
- Linux behavior is scoped to v6.12 source and ABI documentation, not every deployed kernel or storage transport.
- Source review only; no device CDL configuration or fault-injection test was performed.