On Mon, Jan 25, 2021 at 09:32:04AM +0100, Sebastian Andrzej Siewior wrote: > On 2021-01-25 08:30:12 [+0000], Christoph Hellwig wrote: > > > +static void blk_mq_complete_send_ipi(struct request *rq) > > > +{ > > > + struct llist_head *list; > > > + unsigned int cpu; > > > + > > > + cpu = rq->mq_ctx->cpu; > > > + list = &per_cpu(blk_cpu_done, cpu); > > > + if (llist_add(&rq->ipi_list, list)) { > > > + INIT_CSD(&rq->csd, __blk_mq_complete_request_remote, rq); > > > + smp_call_function_single_async(cpu, &rq->csd); > > > + } > > > +} > > > > Nit: it would be nice to initialize cpu and list in the declaration > > lines. > > Why? They get initialized later. Because: unsigned int cpu = rq->mq_ctx->cpu; struct llist_head *list = &per_cpu(blk_cpu_done, cpu); is a lot easier to follow than: struct llist_head *list; unsigned int cpu; cpu = rq->mq_ctx->cpu; list = &per_cpu(blk_cpu_done, cpu);