summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2015-06-18 09:21:19 -0700
committerBrian Behlendorf <[email protected]>2015-06-22 10:22:49 -0700
commit218b4e0a7608f7ef37ec72042a68c45e539a5d1c (patch)
tree749c64001d694546ef2104418ad05249c8b35912 /lib
parent4c6a70091030847ca5d6933916255194483ce91f (diff)
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 <[email protected]> Signed-off-by: Tim Chase <[email protected]> Closes #3501
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions