On Wed, Jun 19, 2024 at 09:50:38AM +0200, Hannes Reinecke wrote: > On 6/19/24 05:34, Ming Lei wrote: > > IO logical block size is one fundamental queue limit, and every IO has > > to be aligned with logical block size because our bio split can't deal > > with unaligned bio. > > > > The check has to be done with queue usage counter grabbed because device > > reconfiguration may change logical block size, and we can prevent the > > reconfiguration from happening by holding queue usage counter. > > > > logical_block_size stays in the 1st cache line of queue_limits, and this > > cache line is always fetched in fast path via bio_may_exceed_limits(), > > so IO perf won't be affected by this check. > > > > Cc: Yi Zhang <yi.zhang@xxxxxxxxxx> > > Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx> > > Cc: Ye Bin <yebin10@xxxxxxxxxx> > > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > > --- > > block/blk-mq.c | 24 ++++++++++++++++++++++++ > > 1 file changed, 24 insertions(+) > > > Is this still an issue after the atomic queue limits patchset from > Christoph? > One of the changes there is that we now always freeze the queue before > changing any limits. > So really this check should never trigger. submit_bio() just blocks on queue freezing, and once queue is unfrozen, submit_bio() still moves on, then unaligned bio is issued to driver/hardware, please see: https://lore.kernel.org/linux-block/ZnDmXsFIPmPlT6Si@fedora/T/#m48c098e6d2df142da97ee3992b47d2b7e942a161 Thanks, Ming