diff options
| author | Warner Losh <imp@FreeBSD.org> | 2019-09-05 23:12:06 +0000 |
|---|---|---|
| committer | Warner Losh <imp@FreeBSD.org> | 2019-09-05 23:12:06 +0000 |
| commit | ed449b634bdd7c3a894364538c5da50ed78615a1 (patch) | |
| tree | 5eb43b4646fd9b5e5898b95da7960cb0a4a52a22 /sys/dev/nvme | |
| parent | 9ffd14dc1177a2f613dd4ffb2253fd3fb7cd1144 (diff) | |
Notes
Diffstat (limited to 'sys/dev/nvme')
| -rw-r--r-- | sys/dev/nvme/nvme_ns_cmd.c | 8 |
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); |
