diff options
Diffstat (limited to 'block/blk-softirq.c')
-rw-r--r-- | block/blk-softirq.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/block/blk-softirq.c b/block/blk-softirq.c index 475fab809a8..58340d0cb23 100644 --- a/block/blk-softirq.c +++ b/block/blk-softirq.c @@ -124,6 +124,14 @@ void __blk_complete_request(struct request *req) } else ccpu = cpu; + /* + * If current CPU and requested CPU are in the same group, running + * softirq in current CPU. One might concern this is just like + * QUEUE_FLAG_SAME_FORCE, but actually not. blk_complete_request() is + * running in interrupt handler, and currently I/O controller doesn't + * support multiple interrupts, so current CPU is unique actually. This + * avoids IPI sending from current CPU to the first CPU of a group. + */ if (ccpu == cpu || ccpu == group_cpu) { struct list_head *list; do_local: |