summaryrefslogtreecommitdiff
path: root/drivers/md
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-06-08 05:13:53 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-06-08 05:13:52 -0700
commit3aa4e5e7c3199c97d63463a8dc8b968e3568cc65 (patch)
treefdf41653646decbe95f11e2c90cf2c96cbcf2d1e /drivers/md
parent3dad7f3687c173cba40d67709adcacf654afb695 (diff)
parentc9762c3c1a12ce24ef8e6e5f3f6f021cefbb9a17 (diff)
Merge "dm: md: Replace scheduling of request with direct call"
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/dm.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 5d42d8f09421..1a7b11d57256 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -2191,8 +2191,11 @@ static void dm_request_fn(struct request_queue *q)
tio = tio_from_request(rq);
/* Establish tio->ti before queuing work (map_tio_request) */
tio->ti = ti;
- queue_kthread_work(&md->kworker, &tio->work);
+ spin_unlock(q->queue_lock);
+ if (map_request(tio, rq, md) == DM_MAPIO_REQUEUE)
+ dm_requeue_original_request(md, rq);
BUG_ON(!irqs_disabled());
+ spin_lock(q->queue_lock);
}
goto out;