On 11/20/24 05:51, Bart Van Assche wrote: >>> +/* >>> + * Change the zone state to "error" if a request is requeued to postpone >>> + * processing of requeued requests until all pending requests have either >>> + * completed or have been requeued. >>> + */ >>> +void blk_zone_write_plug_requeue_request(struct request *rq) >>> +{ >>> + struct gendisk *disk = rq->q->disk; >>> + struct blk_zone_wplug *zwplug; >>> + >>> + if (!disk->zone_wplugs_hash_bits || !blk_rq_is_seq_zoned_write(rq)) >>> + return; >> >> I think the disk->zone_wplugs_hash_bits check needs to go inside >> disk_get_zone_wplug() as that will avoid a similar check in >> blk_zone_write_plug_free_request() too. That said, I am not even convinced it >> is needed at all since these functions should be called only for a zoned drive >> which should have its zone wplug hash setup. > > Moving the disk->zone_wplugs_hash_bits check sounds good to me. > > I added this check after hitting an UBSAN report that indicates that > disk->zone_wplugs_hash_bits was used before it was changed into a non- > zero value. sd_revalidate_disk() submits a very substantial number of > SCSI commands before it calls blk_revalidate_disk_zones(), the function > that sets disk->zone_wplugs_hash_bits. But non of the commands are writes to sequential zones, so the hash bits check should not even be necessary, no ? -- Damien Le Moal Western Digital Research