[PATCHv3 4/4] scsi: handle zone resources errors
Damien Le Moal
Damien.LeMoal at wdc.com
Thu Sep 17 20:37:47 EDT 2020
On 2020/09/18 8:18, Keith Busch wrote:
> From: Damien Le Moal <damien.lemoal at 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 at lst.de>
> Cc: Johannes Thumshirn <Johannes.Thumshirn at wdc.com>
> Signed-off-by: Damien Le Moal <damien.lemoal at 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
More information about the Linux-nvme
mailing list