Damien, > Drivers exposing zoned block devices have to initialize and maintain > correctness (i.e. revalidate) of the device zone bitmaps attached to > the device request queue (seq_zones_bitmap and seq_zones_wlock). > > To simplify coding this, introduce a generic helper function > blk_revalidate_disk_zones() suitable for most (and likely all) cases. > This new function always update the seq_zones_bitmap and seq_zones_wlock > bitmaps as well as the queue nr_zones field when called for a disk > using a request based queue. For a disk using a BIO based queue, only > the number of zones is updated since these queues do not have > schedulers and so do not need the zone bitmaps. > > With this change, the zone bitmap initialization code in sd_zbc.c can be > replaced with a call to this function in sd_zbc_read_zones(), which is > called from the disk revalidate block operation method. > > A call to blk_revalidate_disk_zones() is also added to the null_blk > driver for devices created with the zoned mode enabled. > > Finally, to ensure that zoned devices created with dm-linear or > dm-flakey expose the correct number of zones through sysfs, a call to > blk_revalidate_disk_zones() is added to dm_table_set_restrictions(). > > The zone bitmaps allocated and initialized with > blk_revalidate_disk_zones() are freed automatically from > __blk_release_queue() using the block internal function > blk_queue_free_zone_bitmaps(). Reviewed-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx> -- Martin K. Petersen Oracle Linux Engineering