On Wed, Apr 08, 2020 at 08:29:13AM +0000, Damien Le Moal wrote: > (Changed the subject to point to the correct patch) > > Yes. Indeed we can do that. A flag will keep the interface of the report_zones > method simpler. > > But the second call to the revalidate callback done after the zone report is > done is still needed so that the wp_ofst array can be updated under the queue > freeze and avoid races with number of zones, bitmaps etc updates. I have not > found any good way to avoid that one if we want to preserve > blk_revalidate_disk_zones() as a generic helper. Of course if we reimplement > this in sd_zbc, things are simple, but then we will have a lot of code repeated. True, I missed the second call. But given that it does something entirely different multiplexing it to the same interface does indeed seem rather odd. So I think we can pass a 'finish' or so callback to blk_revalidate_disk_zones. I'm not even sure we need the args or a flag. Ithink we can just make sure calls to blk_revalidate_disk_zones are synchronized and then have a pending_wps pointer int the scsi_disk structure. If that is set, sd_zbc_report_zones updates it, and then the finish callback puts it into the real place.