On 2020/6/2 16:54, Damien Le Moal wrote: > 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. > > Copied. Currently I plan to add a first_seq_zone_nr to bcache on-disk super block, its value will be set by user space bcache-tools when the backing device is formatted for bcache. Then the zone reset bio which has smaller zone number will be rejected immediately by bcache code. This requires on-disk format change, I will do it later with other on-disk change stuffs. Coly Li