> On Sep 10, 2020, at 2:48 AM, Damien Le Moal <Damien.LeMoal@xxxxxxx> wrote: > > 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_DEV_RESOURCE which is returned as -EBUSY to the I/O > issuer, allowing the device user to act appropriately on these > relatively benign zone resource errors. > > With this change the NVMe (ZNS) and sd drivers both return the same > error code for zone resource errors, facilitating the implementation of > IO error handling by the user with a common code base for both device > types. > > Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxx> > --- > 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 7c6dd6f75190..1b5c2a6ad072 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_DEV_RESOURCE; > + } > + break; > default: > action = ACTION_FAIL; > break; > -- > 2.26.2 > Looks Good. Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> -- Himanshu Madhani Oracle Linux Engineering