Brian Behlendorf 218b4e0a76 Add zfs_sb_prune_aliases() function
For kernels which do not implement a per-suberblock shrinker,
those older than Linux 3.1, the shrink_dcache_parent() function
was used to attempt to reclaim dentries.  This was found not be
entirely reliable and could lead to performance issues on older
kernels running meta-data heavy workloads.

To address this issue a zfs_sb_prune_aliases() function has been
added to implement this functionality.  It relies on traversing
the list of znodes for a filesystem and adding them to a private
list with a reference held.  The private list can then be safely
walked outside the z_znodes_lock to prune dentires and drop the
last reference so the inode can be freed.

This provides the same synchronous behavior as the per-filesystem
shrinker and has the advantage of depending on only long standing
interfaces.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Closes #3501
2015-06-22 10:22:49 -07:00
..
2010-08-31 13:41:27 -07:00
2011-04-19 10:10:47 -07:00
2012-10-14 13:06:48 -07:00
2015-06-22 10:22:49 -07:00
2014-06-10 16:46:21 -07:00
2013-03-18 15:33:17 -07:00
2010-08-31 13:41:27 -07:00
2013-10-10 16:56:51 -07:00
2010-08-31 13:41:27 -07:00
2010-08-31 13:41:27 -07:00