On 6/6/24 4:54 PM, Christoph Hellwig wrote: > On Thu, Jun 06, 2024 at 04:37:19PM +0900, Damien Le Moal wrote: >> dm_revalidate_zones() is called from dm_set_zone_restrictions() when the >> mapped device queue limits are not yet set. However, >> dm_revalidate_zones() calls blk_revalidate_disk_zones() and this >> function consults and modifies the mapped device queue limits. Thus, >> currently, blk_revalidate_disk_zones() operates on limits that are not >> yet initialized. >> >> Fix this by moving the call to dm_revalidate_zones() out of >> dm_set_zone_restrictions() and into dm_table_set_restrictions() after >> executing queue_limits_set(). >> >> To further cleanup dm_set_zones_restrictions(), the message about the >> type of zone append (native or emulated) is also moved inside >> dm_revalidate_zones(). >> >> Fixes: 1c0e720228ad ("dm: use queue_limits_set") >> Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx> >> --- >> drivers/md/dm-table.c | 15 +++++++++++---- >> drivers/md/dm-zone.c | 25 ++++++++++--------------- >> drivers/md/dm.h | 1 + >> 3 files changed, 22 insertions(+), 19 deletions(-) >> >> diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c >> index b2d5246cff21..f0c27d5a738b 100644 >> --- a/drivers/md/dm-table.c >> +++ b/drivers/md/dm-table.c >> @@ -2028,10 +2028,7 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q, >> dm_table_any_dev_attr(t, device_is_not_random, NULL)) >> blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q); >> >> - /* >> - * For a zoned target, setup the zones related queue attributes >> - * and resources necessary for zone append emulation if necessary. >> - */ >> + /* For a zoned table, setup the zones related queue attributes. */ > > s/zones/zone/ ? Or is my grammar dector way off? Nope, it is my fingers and brain which are off :) Will fix that. > Otherwise looks good: > > Reviewed-by: Christoph Hellwig <hch@xxxxxx> Thanks. -- Damien Le Moal Western Digital Research