Files
mirror_zfs/include/sys
Brian Behlendorf f604673836 Make arc_prune() asynchronous
As described in the comment above arc_adapt_thread() it is critical
that the arc_adapt_thread() function never sleep while holding a hash
lock.  This behavior was possible in the Linux implementation because
the arc_prune() logic was implemented to be synchronous.  Under
illumos the analogous dnlc_reduce_cache() function is asynchronous.

To address this the arc_do_user_prune() function is has been reworked
in to two new functions as follows:

* arc_prune_async() is an asynchronous implementation which dispatches
the prune callback to be run by the system taskq.  This makes it
suitable to use in the context of the arc_adapt_thread().

* arc_prune() is a synchronous implementation which depends on the
arc_prune_async() implementation but blocks until the outstanding
callbacks complete.  This is used in arc_kmem_reap_now() where it
is safe, and expected, that memory will be freed.

This patch additionally adds the zfs_arc_meta_strategy module option
while allows the meta reclaim strategy to be configured.  It defaults
to a balanced strategy which has been proved to work well under Linux
but the illumos meta-only strategy can be enabled.

Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2015-06-11 10:27:25 -07:00
..
2015-05-11 12:23:16 -07:00
2015-06-11 10:27:25 -07:00
2014-08-01 14:28:05 -07:00
2014-01-07 10:33:11 -08:00
2014-08-01 14:28:05 -07:00
2015-06-09 13:48:02 -07:00
2014-03-04 12:22:24 -08:00
2013-12-10 10:09:27 -08:00
2015-06-09 13:48:02 -07:00
2014-07-29 10:55:29 -07:00
2014-07-29 10:55:29 -07:00
2013-11-04 11:18:14 -08:00
2015-06-09 13:48:02 -07:00
2013-09-04 16:01:24 -07:00
2013-11-04 11:17:48 -08:00
2014-08-13 10:35:00 -07:00
2014-07-30 09:20:35 -07:00
2013-09-04 16:01:24 -07:00
2013-09-04 16:01:24 -07:00
2015-05-11 12:23:16 -07:00
2015-01-06 16:53:24 -08:00
2011-02-10 09:21:43 -08:00
2013-11-04 10:55:25 -08:00
2013-12-18 16:46:35 -08:00
2015-06-09 13:48:02 -07:00
2011-03-02 11:43:50 -08:00
2015-05-04 09:41:09 -07:00
2014-07-28 14:29:58 -07:00
2013-11-04 10:55:25 -08:00
2013-12-18 16:46:35 -08:00
2011-02-10 09:27:21 -08:00
2013-11-04 10:55:25 -08:00
2014-08-11 16:11:43 -07:00
2015-06-09 13:48:02 -07:00
2013-11-04 10:55:25 -08:00
2013-11-05 12:14:56 -08:00
2015-03-20 10:35:20 -07:00
2013-12-16 09:15:57 -08:00