On Thu, Mar 21, 2024 at 08:39:06PM -0600, Keith Busch wrote: > On Fri, Mar 22, 2024 at 10:08:11AM +0800, Ming Lei wrote: > > On Thu, Mar 21, 2024 at 06:01:41PM +0100, Mikulas Patocka wrote: > > > I would change it to > > > > > > if (unlikely(((bi_iter.bi_sector | bio_sectors(bio)) & ((queue_logical_block_size(q) >> 9) - 1)) != 0)) > > > return false; > > > > What if bio->bi_iter.bi_size isn't aligned with 512? The above check > > can't find that at all. > > Shouldn't that mean this check doesn't apply to REQ_OP_DRV_IN/OUT? For REQ_OP_DRV_IN/OUT, only the real user IO command may need the check, and others needn't this check, maybe they don't use .bi_sector or .bi_size at all. > Those ops don't necessarily imply any alignment requirements. It may not > matter here since it looks like all existing users go through > blk_execute_rq() instead of submit_bio(), but there are other checks for > DRV_IN/OUT in this path, so I guess it is supposed to be supported? This patch focuses on FS bio, and passthough request case is more complicated, and we even don't have central entry for real user pt IO request only. Thanks, Ming