mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-13 10:02:38 +00:00
99c14fb99f
When biofinish calls g_io_deliver with an error of ENOMEM, that kicks off the slowdown protocol, forcing I/O to go through g_down rather than be directly dispatch. One of the side effects is that the I/O is resubmitted, so the start routines get called recursively, leading to a recursive lock panic. Rather than make the periph lock recursive, drop and reacquire the lock around such calls to biofinish. For nda, this happens only when we can't allocate space to construct a TRIM. For ada and da, this is only for certain ZONE operations. Sponsored by: Netflix Reviewed by: gallatin Differential Revision: https://reviews.freebsd.org/D45310 |
||
---|---|---|
.. | ||
nvme_all.c | ||
nvme_all.h | ||
nvme_da.c | ||
nvme_xpt.c |