summaryrefslogtreecommitdiffstats
path: root/module/zfs/arc.c
diff options
context:
space:
mode:
Diffstat (limited to 'module/zfs/arc.c')
-rw-r--r--module/zfs/arc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index 7bae2c42d..0c5e66cbe 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -3472,7 +3472,11 @@ arc_prune_async(int64_t adjust)
refcount_add(&ap->p_refcnt, ap->p_pfunc);
ap->p_adjust = adjust;
- taskq_dispatch(arc_prune_taskq, arc_prune_task, ap, TQ_SLEEP);
+ if (taskq_dispatch(arc_prune_taskq, arc_prune_task,
+ ap, TQ_SLEEP) == 0) {
+ refcount_remove(&ap->p_refcnt, ap->p_pfunc);
+ continue;
+ }
ARCSTAT_BUMP(arcstat_prune);
}
mutex_exit(&arc_prune_mtx);