On 2020/09/18 8:18, Keith Busch wrote: > From: Damien Le Moal <damien.lemoal@xxxxxxx> > > 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@xxxxxx> > Cc: Johannes Thumshirn <Johannes.Thumshirn@xxxxxxx> > Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxx> 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