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);