summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2016-12-26 01:45:35 -0500
committerPaul Gortmaker <paul.gortmaker@windriver.com>2016-12-26 01:45:35 -0500
commitc62cff60f257991e3b3c1d34ebcb2524e6658d73 (patch)
tree66e34901dcd685b625fb40ae30f02f26567e5d3d
parent3257c61bfe2b8e9337a030f09d3e6e7c5b95ddd6 (diff)
download4.9-rt-patches-c62cff60f257991e3b3c1d34ebcb2524e6658d73.tar.gz
blk-mq: overwrite intermediary with refresh import (ctxt/whitespace)rt-v4.8-11412-g12e3d3cdd975
-rw-r--r--patches/block-mq-don-t-complete-requests-via-IPI.patch36
1 files changed, 12 insertions, 24 deletions
diff --git a/patches/block-mq-don-t-complete-requests-via-IPI.patch b/patches/block-mq-don-t-complete-requests-via-IPI.patch
index 4300ed848562c5..e3f65acbfe8568 100644
--- a/patches/block-mq-don-t-complete-requests-via-IPI.patch
+++ b/patches/block-mq-don-t-complete-requests-via-IPI.patch
@@ -1,24 +1,21 @@
-From e1e3d438ee07a3a5a58f0728f5581f3ef59e3ed7 Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Thu, 29 Jan 2015 15:10:08 +0100
-Subject: [PATCH] block/mq: don't complete requests via IPI
+Subject: block/mq: don't complete requests via IPI
The IPI runs in hardirq context and there are sleeping locks. This patch
moves the completion into a workqueue.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
- block/blk-core.c | 3 +++
- block/blk-mq.c | 20 ++++++++++++++++++++
- include/linux/blk-mq.h | 2 +-
- include/linux/blkdev.h | 1 +
+ block/blk-core.c | 3 +++
+ block/blk-mq.c | 20 ++++++++++++++++++++
+ include/linux/blk-mq.h | 2 +-
+ include/linux/blkdev.h | 1 +
4 files changed, 25 insertions(+), 1 deletion(-)
-diff --git a/block/blk-core.c b/block/blk-core.c
-index 58b163991c14..42494a6cbc28 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
-@@ -125,6 +125,9 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
+@@ -125,6 +125,9 @@ void blk_rq_init(struct request_queue *q
INIT_LIST_HEAD(&rq->queuelist);
INIT_LIST_HEAD(&rq->timeout_list);
@@ -28,11 +25,9 @@ index 58b163991c14..42494a6cbc28 100644
rq->cpu = -1;
rq->q = q;
rq->__sector = (sector_t) -1;
-diff --git a/block/blk-mq.c b/block/blk-mq.c
-index affbf13d4fa5..e9c3450b0d9a 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
-@@ -177,6 +177,9 @@ static void blk_mq_rq_ctx_init(struct request_queue *q, struct blk_mq_ctx *ctx,
+@@ -177,6 +177,9 @@ static void blk_mq_rq_ctx_init(struct re
rq->resid_len = 0;
rq->sense = NULL;
@@ -42,7 +37,7 @@ index affbf13d4fa5..e9c3450b0d9a 100644
INIT_LIST_HEAD(&rq->timeout_list);
rq->timeout = 0;
-@@ -349,6 +352,17 @@ void blk_mq_end_request(struct request *rq, int error)
+@@ -345,6 +348,17 @@ void blk_mq_end_request(struct request *
}
EXPORT_SYMBOL(blk_mq_end_request);
@@ -60,7 +55,7 @@ index affbf13d4fa5..e9c3450b0d9a 100644
static void __blk_mq_complete_request_remote(void *data)
{
struct request *rq = data;
-@@ -356,6 +370,8 @@ static void __blk_mq_complete_request_remote(void *data)
+@@ -352,6 +366,8 @@ static void __blk_mq_complete_request_re
rq->q->softirq_done_fn(rq);
}
@@ -69,7 +64,7 @@ index affbf13d4fa5..e9c3450b0d9a 100644
static void blk_mq_ipi_complete_request(struct request *rq)
{
struct blk_mq_ctx *ctx = rq->mq_ctx;
-@@ -372,10 +388,14 @@ static void blk_mq_ipi_complete_request(struct request *rq)
+@@ -368,10 +384,14 @@ static void blk_mq_ipi_complete_request(
shared = cpus_share_cache(cpu, ctx->cpu);
if (cpu != ctx->cpu && !shared && cpu_online(ctx->cpu)) {
@@ -84,21 +79,17 @@ index affbf13d4fa5..e9c3450b0d9a 100644
} else {
rq->q->softirq_done_fn(rq);
}
-diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
-index 5daa0ef756dd..232800a2bc7f 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
-@@ -219,7 +219,7 @@ static inline u16 blk_mq_unique_tag_to_tag(u32 unique_tag)
+@@ -209,7 +209,7 @@ static inline u16 blk_mq_unique_tag_to_t
+ return unique_tag & BLK_MQ_UNIQUE_TAG_MASK;
}
- struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *, const int ctx_index);
-
+void __blk_mq_complete_request_remote_work(struct work_struct *work);
int blk_mq_request_started(struct request *rq);
void blk_mq_start_request(struct request *rq);
void blk_mq_end_request(struct request *rq, int error);
-diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index c47c358ba052..797a06983c3e 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -89,6 +89,7 @@ struct request {
@@ -109,6 +100,3 @@ index c47c358ba052..797a06983c3e 100644
u64 fifo_time;
};
---
-2.10.1
-