summaryrefslogtreecommitdiff
path: root/drivers/block/nvme-core.c
diff options
context:
space:
mode:
authorKeith Busch <keith.busch@intel.com>2013-04-30 17:19:38 (GMT)
committerMatthew Wilcox <matthew.r.wilcox@intel.com>2013-05-17 13:18:38 (GMT)
commit053ab702cc2702f25a97ead087ed344b864785b7 (patch)
treec1e37538f307692c5a1bb885bde58be6282b6378 /drivers/block/nvme-core.c
parent1287dabd345f447bbe0f7a99fc95ab89bcfc0f5d (diff)
downloadlinux-fsl-qoriq-053ab702cc2702f25a97ead087ed344b864785b7.tar.xz
NVMe: Do not cancel command multiple times
Cancelling an already cancelled command does not do anything, so check the command context before cancelling it, continuing if had already been cancelled so we do not log the same problem every second if a device stops responding. Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Diffstat (limited to 'drivers/block/nvme-core.c')
-rw-r--r--drivers/block/nvme-core.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
index d783f15..42abf72 100644
--- a/drivers/block/nvme-core.c
+++ b/drivers/block/nvme-core.c
@@ -978,6 +978,8 @@ static void nvme_cancel_ios(struct nvme_queue *nvmeq, bool timeout)
if (timeout && !time_after(now, info[cmdid].timeout))
continue;
+ if (info[cmdid].ctx == CMD_CTX_CANCELLED)
+ continue;
dev_warn(nvmeq->q_dmadev, "Cancelling I/O %d\n", cmdid);
ctx = cancel_cmdid(nvmeq, cmdid, &fn);
fn(nvmeq->dev, ctx, &cqe);