diff options
author | Keith Busch <keith.busch@intel.com> | 2013-04-30 11:19:38 -0600 |
---|---|---|
committer | Matthew Wilcox <matthew.r.wilcox@intel.com> | 2013-05-17 09:18:38 -0400 |
commit | 053ab702cc2702f25a97ead087ed344b864785b7 (patch) | |
tree | c1e37538f307692c5a1bb885bde58be6282b6378 | |
parent | 1287dabd345f447bbe0f7a99fc95ab89bcfc0f5d (diff) | |
download | op-kernel-dev-053ab702cc2702f25a97ead087ed344b864785b7.zip op-kernel-dev-053ab702cc2702f25a97ead087ed344b864785b7.tar.gz |
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>
-rw-r--r-- | drivers/block/nvme-core.c | 2 |
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); |