On 6/11/24 2:54 PM, Christoph Hellwig wrote: > On Tue, Jun 11, 2024 at 07:52:39AM +0200, Christoph Hellwig wrote: >>> Maybe we should clear the other zone related limits here ? If the drive is >>> reformatted/converted from SMR to CMR (FORMAT WITH PRESET), the other zone >>> limits may be set already, no ? >> >> blk_validate_zoned_limits already takes care of that. > > Sorry, brainfart. The integrity code does that, but not the zoned > code. I suspect the core code might be a better place for it, > though. Yes. Just replied to your previous email before seeing this one. I think that: static int blk_validate_zoned_limits(struct queue_limits *lim) { if (!lim->zoned) { if (WARN_ON_ONCE(lim->max_open_zones) || WARN_ON_ONCE(lim->max_active_zones) || WARN_ON_ONCE(lim->zone_write_granularity) || WARN_ON_ONCE(lim->max_zone_append_sectors)) return -EINVAL; return 0; } ... could be changed into: static int blk_validate_zoned_limits(struct queue_limits *lim) { if (!lim->zoned) { lim->max_open_zones = 0; lim->max_active_zones = 0; lim->zone_write_granularity = 0; lim->max_zone_append_sectors = 0 return 0; } But then we would not see "bad" drivers. Could have a small blk_clear_zoned_limits(struct queue_limits *lim) helper too. -- Damien Le Moal Western Digital Research