diff --git a/sys/contrib/openzfs/module/os/freebsd/spl/spl_vfs.c b/sys/contrib/openzfs/module/os/freebsd/spl/spl_vfs.c --- a/sys/contrib/openzfs/module/os/freebsd/spl/spl_vfs.c +++ b/sys/contrib/openzfs/module/os/freebsd/spl/spl_vfs.c @@ -256,6 +256,12 @@ return (0); } +static void +vrele_task_runner(void *vp) +{ + vrele((vnode_t *)vp); +} + /* * Like vn_rele() except if we are going to call VOP_INACTIVE() then do it * asynchronously using a taskq. This can avoid deadlocks caused by re-entering @@ -272,6 +278,7 @@ VERIFY3U(vp->v_usecount, >, 0); if (refcount_release_if_not_last(&vp->v_usecount)) return; - VERIFY3U(taskq_dispatch((taskq_t *)taskq, - (task_func_t *)vrele, vp, TQ_SLEEP), !=, 0); + VERIFY3U(taskq_dispatch((taskq_t *)taskq, vrele_task_runner, vp, + TQ_SLEEP), + !=, 0); }