summaryrefslogtreecommitdiffstats
path: root/sys/modules
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2010-05-16 11:56:42 +0000
committerpjd <pjd@FreeBSD.org>2010-05-16 11:56:42 +0000
commit4f5465212474337736d67366f6feaefd8199ca17 (patch)
tree8be7be1135510dcf415136018b2846675ba753b9 /sys/modules
parent9100ea8887f05a87a102fb3749975a39b5117f2f (diff)
downloadFreeBSD-src-4f5465212474337736d67366f6feaefd8199ca17.zip
FreeBSD-src-4f5465212474337736d67366f6feaefd8199ca17.tar.gz
The whole point of having dedicated worker thread for each leaf VDEV was to
avoid calling zio_interrupt() from geom_up thread context. It turns out that when provider is forcibly removed from the system and we kill worker thread there can still be some ZIOs pending. To complete pending ZIOs when there is no worker thread anymore we still have to call zio_interrupt() from geom_up context. To avoid this race just remove use of worker threads altogether. This should be more or less fine, because I also thought that zio_interrupt() does more work, but it only makes small UMA allocation with M_WAITOK. It also saves one context switch per I/O request. PR: kern/145339 Reported by: Alex Bakhtin <Alex.Bakhtin@gmail.com> MFC after: 1 week
Diffstat (limited to 'sys/modules')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud