Re: [PATCH v2 2/2] block/blk-mq: Don't complete locally if capacities are different

From: Qais Yousef
Date: Sat Feb 24 2024 - 18:06:43 EST


On 02/23/24 08:09, Bart Van Assche wrote:
> On 2/23/24 07:57, Qais Yousef wrote:
> > diff --git a/block/blk-mq.c b/block/blk-mq.c
> > index 2dc01551e27c..ea69047e12f7 100644
> > --- a/block/blk-mq.c
> > +++ b/block/blk-mq.c
> > @@ -1167,10 +1167,11 @@ static inline bool blk_mq_complete_need_ipi(struct request *rq)
> > if (force_irqthreads())
> > return false;
> > - /* same CPU or cache domain? Complete locally */
> > + /* same CPU or cache domain and capacity? Complete locally */
> > if (cpu == rq->mq_ctx->cpu ||
> > (!test_bit(QUEUE_FLAG_SAME_FORCE, &rq->q->queue_flags) &&
> > - cpus_share_cache(cpu, rq->mq_ctx->cpu)))
> > + cpus_share_cache(cpu, rq->mq_ctx->cpu) &&
> > + cpus_equal_capacity(cpu, rq->mq_ctx->cpu)))
> > return false;
> > /* don't try to IPI to an offline CPU */
>
> I think it's worth mentioning that this change is intended for storage
> controllers that only support a single completion interrupt. Anyway:

Sorry I didn't realize it is only applied for this scenario.

>
> Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx>

Thanks for the reviews!