mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-30 13:38:40 +00:00
null_blk: prevent timer handler running on a different CPU where started
When irqmode=2 (IRQ completion handler is timer), timer handler should be called on the same CPU where the timer has been started. Since completion_queues are per-cpu and the completion handler only touches completion_queue for local CPU, we need to prevent the handler from running on a different CPU where the timer has been started. Otherwise, the IO cannot be completed until another completion handler is executed on that CPU. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Jens Axboe <axboe@fb.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
42483228d4
commit
419c21a3b6
@ -257,7 +257,7 @@ static void null_cmd_end_timer(struct nullb_cmd *cmd)
|
||||
if (llist_add(&cmd->ll_list, &cq->list)) {
|
||||
ktime_t kt = ktime_set(0, completion_nsec);
|
||||
|
||||
hrtimer_start(&cq->timer, kt, HRTIMER_MODE_REL);
|
||||
hrtimer_start(&cq->timer, kt, HRTIMER_MODE_REL_PINNED);
|
||||
}
|
||||
|
||||
put_cpu();
|
||||
|
Loading…
Reference in New Issue
Block a user