| From a28262aea838045313f2c8d1c11abb90f1efba4a Mon Sep 17 00:00:00 2001 |
| From: "Wunderlich, Mark" <mark.wunderlich@intel.com> |
| Date: Wed, 18 Sep 2019 23:36:37 +0000 |
| Subject: [PATCH] nvme-tcp: fix wrong stop condition in io_work |
| |
| commit ddef29578a81a1d4d8f2b26a7adbfe21407ee3ea upstream. |
| |
| Allow the do/while statement to continue if current time |
| is not after the proposed time 'deadline'. Intent is to |
| allow loop to proceed for a specific time period. Currently |
| the loop, as coded, will exit after first pass. |
| |
| Signed-off-by: Mark Wunderlich <mark.wunderlich@intel.com> |
| Reviewed-by: Sagi Grimberg <sagi@grimberg.me> |
| Signed-off-by: Sagi Grimberg <sagi@grimberg.me> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c |
| index 606b13d35d16..bdadb27b28bb 100644 |
| --- a/drivers/nvme/host/tcp.c |
| +++ b/drivers/nvme/host/tcp.c |
| @@ -1039,7 +1039,7 @@ static void nvme_tcp_io_work(struct work_struct *w) |
| { |
| struct nvme_tcp_queue *queue = |
| container_of(w, struct nvme_tcp_queue, io_work); |
| - unsigned long start = jiffies + msecs_to_jiffies(1); |
| + unsigned long deadline = jiffies + msecs_to_jiffies(1); |
| |
| do { |
| bool pending = false; |
| @@ -1064,7 +1064,7 @@ static void nvme_tcp_io_work(struct work_struct *w) |
| if (!pending) |
| return; |
| |
| - } while (time_after(jiffies, start)); /* quota is exhausted */ |
| + } while (!time_after(jiffies, deadline)); /* quota is exhausted */ |
| |
| queue_work_on(queue->io_cpu, nvme_tcp_wq, &queue->io_work); |
| } |
| -- |
| 2.7.4 |
| |