Commit 052189a2 authored by Kiyoshi Ueda's avatar Kiyoshi Ueda Committed by Alasdair G Kergon

dm: remove superfluous irq disablement in dm_request_fn

This patch changes spin_lock_irq() to spin_lock() in dm_request_fn().
This patch is just a clean-up and no functional change.

The spin_lock_irq() was leftover from the early request-based dm code,
where map_request() used to enable interrupts.
Since current map_request() never enables interrupts, we can change it
to spin_lock() to match the prior spin_unlock().

Auditing through the dm and block-layer code called from
map_request(), I confirmed all functions save/restore interrupt
status, so no function returning with interrupts enabled.
Also I haven't observed any problem on my test environment which
uses scsi and lpfc driver after heavy I/O testing with occasional
path down/up.

Added BUG_ON() to detect breakage in future.
Signed-off-by: default avatarKiyoshi Ueda <k-ueda@ct.jp.nec.com>
Signed-off-by: default avatarJun'ichi Nomura <j-nomura@ce.jp.nec.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent dbc883f1
...@@ -1637,13 +1637,15 @@ static void dm_request_fn(struct request_queue *q) ...@@ -1637,13 +1637,15 @@ static void dm_request_fn(struct request_queue *q)
if (map_request(ti, clone, md)) if (map_request(ti, clone, md))
goto requeued; goto requeued;
spin_lock_irq(q->queue_lock); BUG_ON(!irqs_disabled());
spin_lock(q->queue_lock);
} }
goto out; goto out;
requeued: requeued:
spin_lock_irq(q->queue_lock); BUG_ON(!irqs_disabled());
spin_lock(q->queue_lock);
plug_and_out: plug_and_out:
if (!elv_queue_empty(q)) if (!elv_queue_empty(q))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment