From: Tim Chase Date: Thu, 3 Sep 2015 12:13:15 +0000 (-0500) Subject: Prevent reclaim in the traverse prefetch thread X-Git-Tag: zfs-0.6.5~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dca8c34da4212ed85a92111f26bd3a3cd782f270;p=zfs 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 --- 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); } /*