aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/nvme
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2019-09-05 23:12:06 +0000
committerWarner Losh <imp@FreeBSD.org>2019-09-05 23:12:06 +0000
commited449b634bdd7c3a894364538c5da50ed78615a1 (patch)
tree5eb43b4646fd9b5e5898b95da7960cb0a4a52a22 /sys/dev/nvme
parent9ffd14dc1177a2f613dd4ffb2253fd3fb7cd1144 (diff)
Notes
Diffstat (limited to 'sys/dev/nvme')
-rw-r--r--sys/dev/nvme/nvme_ns_cmd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/nvme/nvme_ns_cmd.c b/sys/dev/nvme/nvme_ns_cmd.c
index 5cf61b772fed..1bf92ec5e02a 100644
--- a/sys/dev/nvme/nvme_ns_cmd.c
+++ b/sys/dev/nvme/nvme_ns_cmd.c
@@ -191,6 +191,14 @@ nvme_ns_dump(struct nvme_namespace *ns, void *virt, off_t offset, size_t len)
nvme_qpair_process_completions(req->qpair);
}
+ /*
+ * Normally, when using the polling interface, we can't return a
+ * timeout error because we don't know when the completion routines
+ * will be called if the command later completes. However, in this
+ * case we're running a system dump, so all interrupts are turned
+ * off, the scheduler isn't running so there's nothing to complete
+ * the transaction.
+ */
if (status.done == FALSE)
return (ETIMEDOUT);