[PATCH 3/3] block: Polling completion performance optimization
Keith Busch
keith.busch at intel.com
Thu Dec 21 12:46:36 PST 2017
When a request completion is polled, the completion task wakes itself
up. This is unnecessary, as the task can just set itself back to
running.
Signed-off-by: Keith Busch <keith.busch at intel.com>
---
fs/block_dev.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 4a181fcb5175..ce67ffe73430 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -181,7 +181,10 @@ static void blkdev_bio_end_io_simple(struct bio *bio)
struct task_struct *waiter = bio->bi_private;
WRITE_ONCE(bio->bi_private, NULL);
- wake_up_process(waiter);
+ if (current != waiter)
+ wake_up_process(waiter);
+ else
+ __set_current_state(TASK_RUNNING);
}
static ssize_t
--
2.13.6
More information about the Linux-nvme
mailing list