aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dcache.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2013-08-27 20:17:57 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2013-09-10 18:56:30 -0400
commit0a234c6dcb79a270803f5c9773ed650b78730962 (patch)
tree8f93bd04d5c01a32dc78617c04dc770dc4b86883 /fs/dcache.c
parent24f7c6b981fb70084757382da464ea85d72af300 (diff)
shrinker: convert superblock shrinkers to new API
Convert superblock shrinker to use the new count/scan API, and propagate the API changes through to the filesystem callouts. The filesystem callouts already use a count/scan API, so it's just changing counters to longs to match the VM API. This requires the dentry and inode shrinker callouts to be converted to the count/scan API. This is mainly a mechanical change. [glommer@openvz.org: use mult_frac for fractional proportions, build fixes] Signed-off-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Glauber Costa <glommer@openvz.org> Acked-by: Mel Gorman <mgorman@suse.de> Cc: "Theodore Ts'o" <tytso@mit.edu> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Cc: Arve Hjønnevåg <arve@android.com> Cc: Carlos Maiolino <cmaiolino@redhat.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Chuck Lever <chuck.lever@oracle.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: David Rientjes <rientjes@google.com> Cc: Gleb Natapov <gleb@redhat.com> Cc: Greg Thelen <gthelen@google.com> Cc: J. Bruce Fields <bfields@redhat.com> Cc: Jan Kara <jack@suse.cz> Cc: Jerome Glisse <jglisse@redhat.com> Cc: John Stultz <john.stultz@linaro.org> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Kent Overstreet <koverstreet@google.com> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Marcelo Tosatti <mtosatti@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Steven Whitehouse <swhiteho@redhat.com> Cc: Thomas Hellstrom <thellstrom@vmware.com> Cc: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/dcache.c')
-rw-r--r--fs/dcache.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 509b49410943..77d466b13fef 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -913,11 +913,12 @@ static void shrink_dentry_list(struct list_head *list)
913 * This function may fail to free any resources if all the dentries are in 913 * This function may fail to free any resources if all the dentries are in
914 * use. 914 * use.
915 */ 915 */
916void prune_dcache_sb(struct super_block *sb, int count) 916long prune_dcache_sb(struct super_block *sb, unsigned long nr_to_scan)
917{ 917{
918 struct dentry *dentry; 918 struct dentry *dentry;
919 LIST_HEAD(referenced); 919 LIST_HEAD(referenced);
920 LIST_HEAD(tmp); 920 LIST_HEAD(tmp);
921 long freed = 0;
921 922
922relock: 923relock:
923 spin_lock(&sb->s_dentry_lru_lock); 924 spin_lock(&sb->s_dentry_lru_lock);
@@ -942,7 +943,8 @@ relock:
942 this_cpu_dec(nr_dentry_unused); 943 this_cpu_dec(nr_dentry_unused);
943 sb->s_nr_dentry_unused--; 944 sb->s_nr_dentry_unused--;
944 spin_unlock(&dentry->d_lock); 945 spin_unlock(&dentry->d_lock);
945 if (!--count) 946 freed++;
947 if (!--nr_to_scan)
946 break; 948 break;
947 } 949 }
948 cond_resched_lock(&sb->s_dentry_lru_lock); 950 cond_resched_lock(&sb->s_dentry_lru_lock);
@@ -952,6 +954,7 @@ relock:
952 spin_unlock(&sb->s_dentry_lru_lock); 954 spin_unlock(&sb->s_dentry_lru_lock);
953 955
954 shrink_dentry_list(&tmp); 956 shrink_dentry_list(&tmp);
957 return freed;
955} 958}
956 959
957/* 960/*