On Tue, 2020-06-02 at 00:06 +0800, Coly Li wrote: > > > + * cache device. > > > + */ > > > + if (bio_op(bio) == REQ_OP_ZONE_RESET_ALL) > > > + nr_zones = s->d->disk->queue->nr_zones; > > > > Not: sending a REQ_OP_ZONE_RESET BIO to a conventional zone will be failed by > > the disk... This is not allowed by the ZBC/ZAC specs. So invalidation the cache > > for conventional zones is not really necessary. But as an initial support, I > > think this is fine. This can be optimized later. > > > Copied, will think of how to optimized later. So far in my testing, > resetting conventional zones may receive error and timeout from > underlying drivers and bcache code just forwards such error to upper > layer. What I see is the reset command hangs for a quite long time and > failed. I will find a way to make the zone reset command on conventional > zone fail immediately. It is 100% guaranteed that a zone reset issued to a conventional zone will fail. That is defined in ZBC/ZAC specifications. Resetting a single conventional zone is an error. We know the command will fail and the failure is instantaneous from the drive. The scsi layer should not retry these failed reset zone command, we have special error handling code preventing retries since we know that the command can only fail again. So I am not sure why you are seeing hang/long time before the failure is signaled... This may need investigation. -- Damien Le Moal Western Digital Research