mirror of
https://github.com/opnsense/src.git
synced 2026-06-05 06:42:56 -04:00
While we should have cleared all the pending I/O prior to calling nvme_qpair_destroy, which should ensure that if the callout_drain causes a call to nvme_qpair_timeout(), it won't schedule any new timeout. However, it doesn't hurt to set timeout_pending to false in nvme_qpair_destroy() and have nvme_qpair_timeout() exit early if it sees it w/o scheduling a timeout. Since we don't otherwise stop the timeout until we're about to destroy the qpair, this ensures we fail safe. The lock/unlock also ensures the callout_drain will either remove the callout, or wait for it to run with the early bailout. We can likely further improve this by using callout_stop() inside the pending lock. I'll investigate that for future refinement. Sponsored by: Netflix Suggestions by: jhb Reviewed by: gallatin Differential Revision: https://reviews.freebsd.org/D42065 |
||
|---|---|---|
| .. | ||
| nvme.c | ||
| nvme.h | ||
| nvme_ahci.c | ||
| nvme_ctrlr.c | ||
| nvme_ctrlr_cmd.c | ||
| nvme_ns.c | ||
| nvme_ns_cmd.c | ||
| nvme_pci.c | ||
| nvme_private.h | ||
| nvme_qpair.c | ||
| nvme_sim.c | ||
| nvme_sysctl.c | ||
| nvme_test.c | ||
| nvme_util.c | ||