Return -1 from arc_shrinker_func()

This is analogous to SPL commit zfsonlinux/spl@b9b3715.  While
we don't have clear evidence of systems getting caught here
indefinately like in the SPL this ensures that it will never
happen.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1579
This commit is contained in:
Richard Yao 2013-08-04 19:13:15 -04:00 committed by Brian Behlendorf
parent 8170d28126
commit c11a12bc3b

View File

@ -2374,10 +2374,8 @@ __arc_shrinker_func(struct shrinker *shrink, struct shrink_control *sc)
*/ */
if (pages > 0) { if (pages > 0) {
arc_kmem_reap_now(ARC_RECLAIM_AGGR, ptob(sc->nr_to_scan)); arc_kmem_reap_now(ARC_RECLAIM_AGGR, ptob(sc->nr_to_scan));
pages = btop(arc_evictable_memory());
} else { } else {
arc_kmem_reap_now(ARC_RECLAIM_CONS, ptob(sc->nr_to_scan)); arc_kmem_reap_now(ARC_RECLAIM_CONS, ptob(sc->nr_to_scan));
pages = -1;
} }
/* /*
@ -2397,7 +2395,7 @@ __arc_shrinker_func(struct shrinker *shrink, struct shrink_control *sc)
mutex_exit(&arc_reclaim_thr_lock); mutex_exit(&arc_reclaim_thr_lock);
return (pages); return (-1);
} }
SPL_SHRINKER_CALLBACK_WRAPPER(arc_shrinker_func); SPL_SHRINKER_CALLBACK_WRAPPER(arc_shrinker_func);