Re: [PATCH 4.19 59/92] sd: Fix REQ_OP_ZONE_REPORT completion handling

From: Damien Le Moal
Date: Tue Jan 28 2020 - 20:06:17 EST


On 2020/01/29 3:15, Greg Kroah-Hartman wrote:
> On Tue, Jan 28, 2020 at 07:02:31PM +0100, Pavel Machek wrote:
>> Hi!
>>
>>> From: Masato Suzuki <masato.suzuki@xxxxxxx>
>>>
>>>
>>
>>> ZBC/ZAC report zones command may return less bytes than requested if the
>>> number of matching zones for the report request is small. However, unlike
>>> read or write commands, the remainder of incomplete report zones commands
>>> cannot be automatically requested by the block layer: the start sector of
>>> the next report cannot be known, and the report reply may not be 512B
>>> aligned for SAS drives (a report zone reply size is always a multiple of
>>> 64B). The regular request completion code executing bio_advance() and
>>> restart of the command remainder part currently causes invalid zone
>>> descriptor data to be reported to the caller if the report zone size is
>>> smaller than 512B (a case that can happen easily for a report of the last
>>> zones of a SAS drive for example).
>>
>> What is the story here? Mainline does not seem to have this patch, so
>> this is not the case of "upstream commit xxx" line simply missing. If
>> the same bug is fixed in mainline different way, it would be nice to
>> point to that commit..
>
> Yes, this is not needed in 5.4 as it was rewritten differently there.

Correct. REQ_OP_ZONE_REPORT was dropped with kernel 4.20 and report zones
is now handled through a device file method with scsi_execute() instead of
a BIO. So this bug does not exist in kernels 4.20 and upward.

>
> thanks,
>
> greg k-h
>


--
Damien Le Moal
Western Digital Research