block: Don't disable interrupts in trigger_softirq()
trigger_softirq() is always invoked as a SMP-function call which is always invoked with disables interrupts. Don't disable interrupt in trigger_softirq() because interrupts are already disabled. Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
708edafa88
commit
de678bc63c
@ -42,17 +42,13 @@ static __latent_entropy void blk_done_softirq(struct softirq_action *h)
|
|||||||
static void trigger_softirq(void *data)
|
static void trigger_softirq(void *data)
|
||||||
{
|
{
|
||||||
struct request *rq = data;
|
struct request *rq = data;
|
||||||
unsigned long flags;
|
|
||||||
struct list_head *list;
|
struct list_head *list;
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
list = this_cpu_ptr(&blk_cpu_done);
|
list = this_cpu_ptr(&blk_cpu_done);
|
||||||
list_add_tail(&rq->ipi_list, list);
|
list_add_tail(&rq->ipi_list, list);
|
||||||
|
|
||||||
if (list->next == &rq->ipi_list)
|
if (list->next == &rq->ipi_list)
|
||||||
raise_softirq_irqoff(BLOCK_SOFTIRQ);
|
raise_softirq_irqoff(BLOCK_SOFTIRQ);
|
||||||
|
|
||||||
local_irq_restore(flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user