On Tue, May 16, 2023 at 09:20:55AM +0800, Ming Lei wrote: > > That sounds like a good idea. It changes more behavior than what Ming is > > targeting here, but after looking through each use for RQF_ELV, I think > > not having that set really is the right thing to do in all cases for > > passthrough requests. > > I did consider that approach. But: > > - RQF_ELV actually means that the request & its tag is allocated from sched tags. > > - if RQF_ELV is cleared for passthrough request, request may be > allocated from sched tags(normal IO) and driver tags(passthrough) at the same time. > This way may cause other problem, such as, breaking blk_mq_hctx_has_requests(). > Meantime it becomes not likely to optimize tags resource utilization in future, > at least for single LUN/NS, no need to keep sched tags & driver tags > in memory at the same time. Then make that obvious. That is: - rename RQF_ELV to RQV_SCHED_TAGS - add the RQV_SCHED_TAGS check to your blk_mq_bypass_sched helper. I'd also invert the return value and rename it to someting like blk_rq_use_sched.