Re: [PATCHv3 4/4] scsi: handle zone resources errors

Damien Le Moal
2020-09-18T00:37:53Z

On 2020/09/18 8:18, Keith Busch wrote:
> From: Damien Le Moal <damien.lemoal@wdc.com>
>
> ZBC or ZAC disks that have a limit on the number of open zones may fail
> a zone open command or a write to a zone that is not already implicitly
> or explicitly open if the total number of open zones is already at the
> maximum allowed.
>
> For these operations, instead of returning the generic BLK_STS_IOERR,
> return BLK_STS_ZONE_OPEN_RESOURCE which is returned as -ETOOMANYREFS to
> the I/O issuer, allowing the device user to act appropriately on these
> relatively benign zone resource errors.
>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Johannes Thumshirn <Johannes.Thumshirn@wdc.com>
> Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>

Shouldn't you add your signed-off-by here ?

> ---
> drivers/scsi/scsi_lib.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index 7affaaf8b98e..c129ac6666da 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -758,6 +758,15 @@ static void scsi_io_completion_action(struct scsi_cmnd *cmd, int result)
> /* See SSC3rXX or current. */
> action = ACTION_FAIL;
> break;
> + case DATA_PROTECT:
> + action = ACTION_FAIL;
> + if ((sshdr.asc == 0x0C && sshdr.ascq == 0x12) ||
> + (sshdr.asc == 0x55 &&
> + (sshdr.ascq == 0x0E || sshdr.ascq == 0x0F))) {
> + /* Insufficient zone resources */
> + blk_stat = BLK_STS_ZONE_OPEN_RESOURCE;
> + }
> + break;
> default:
> action = ACTION_FAIL;
> break;
>

--
Damien Le Moal
Western Digital Research