Stefan, > This is still the case (with Linux 5.10). I would have expected that > to be non-zero for devices with ATA_HORKAGE_ZERO_AFTER_TRIM. The short answer is that we have split things into two distinct operations: Deallocating a block range and zeroing a block range. And as a result, upper layers no longer have to know whether a discard is deterministic or not. That is all handled at the bottom of the stack where the requested operation is translated into something suitable for the device in question. Because of the semantic distinction between deallocating and zeroing a block range, discard_zeroes_data always reports 0 on modern kernels. This is done to make applications pick the zeroing operation over discard when they want to clear a block range. -- Martin K. Petersen Oracle Linux Engineering