From dca8c34da4212ed85a92111f26bd3a3cd782f270 Mon Sep 17 00:00:00 2001 From: Tim Chase Date: Thu, 3 Sep 2015 07:13:15 -0500 Subject: Prevent reclaim in the traverse prefetch thread Reclaim in the traverse prefetch thread, which is run on the system taskq, can overrun the stack. Signed-off-by: Brian Behlendorf Signed-off-by: Tim Chase Closes #3733 --- module/zfs/dmu_traverse.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/zfs/dmu_traverse.c b/module/zfs/dmu_traverse.c index 44b23280d..12d099bfd 100644 --- a/module/zfs/dmu_traverse.c +++ b/module/zfs/dmu_traverse.c @@ -476,6 +476,7 @@ traverse_prefetch_thread(void *arg) traverse_data_t *td_main = arg; traverse_data_t td = *td_main; zbookmark_phys_t czb; + fstrans_cookie_t cookie = spl_fstrans_mark(); td.td_func = traverse_prefetcher; td.td_arg = td_main->td_pfd; @@ -489,6 +490,7 @@ traverse_prefetch_thread(void *arg) td_main->td_pfd->pd_exited = B_TRUE; cv_broadcast(&td_main->td_pfd->pd_cv); mutex_exit(&td_main->td_pfd->pd_mtx); + spl_fstrans_unmark(cookie); } /* -- cgit v1.2.3