diff options
author | Dave Chinner <dchinner@redhat.com> | 2013-08-27 20:17:57 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-09-10 18:56:30 -0400 |
commit | 0a234c6dcb79a270803f5c9773ed650b78730962 (patch) | |
tree | 8f93bd04d5c01a32dc78617c04dc770dc4b86883 /fs/inode.c | |
parent | 24f7c6b981fb70084757382da464ea85d72af300 (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/inode.c')
-rw-r--r-- | fs/inode.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/inode.c b/fs/inode.c index 2a3c37ea823d..021d64768a55 100644 --- a/fs/inode.c +++ b/fs/inode.c | |||
@@ -706,10 +706,11 @@ static int can_unuse(struct inode *inode) | |||
706 | * LRU does not have strict ordering. Hence we don't want to reclaim inodes | 706 | * LRU does not have strict ordering. Hence we don't want to reclaim inodes |
707 | * with this flag set because they are the inodes that are out of order. | 707 | * with this flag set because they are the inodes that are out of order. |
708 | */ | 708 | */ |
709 | void prune_icache_sb(struct super_block *sb, int nr_to_scan) | 709 | long prune_icache_sb(struct super_block *sb, unsigned long nr_to_scan) |
710 | { | 710 | { |
711 | LIST_HEAD(freeable); | 711 | LIST_HEAD(freeable); |
712 | int nr_scanned; | 712 | long nr_scanned; |
713 | long freed = 0; | ||
713 | unsigned long reap = 0; | 714 | unsigned long reap = 0; |
714 | 715 | ||
715 | spin_lock(&sb->s_inode_lru_lock); | 716 | spin_lock(&sb->s_inode_lru_lock); |
@@ -779,6 +780,7 @@ void prune_icache_sb(struct super_block *sb, int nr_to_scan) | |||
779 | list_move(&inode->i_lru, &freeable); | 780 | list_move(&inode->i_lru, &freeable); |
780 | sb->s_nr_inodes_unused--; | 781 | sb->s_nr_inodes_unused--; |
781 | this_cpu_dec(nr_unused); | 782 | this_cpu_dec(nr_unused); |
783 | freed++; | ||
782 | } | 784 | } |
783 | if (current_is_kswapd()) | 785 | if (current_is_kswapd()) |
784 | __count_vm_events(KSWAPD_INODESTEAL, reap); | 786 | __count_vm_events(KSWAPD_INODESTEAL, reap); |
@@ -789,6 +791,7 @@ void prune_icache_sb(struct super_block *sb, int nr_to_scan) | |||
789 | current->reclaim_state->reclaimed_slab += reap; | 791 | current->reclaim_state->reclaimed_slab += reap; |
790 | 792 | ||
791 | dispose_list(&freeable); | 793 | dispose_list(&freeable); |
794 | return freed; | ||
792 | } | 795 | } |
793 | 796 | ||
794 | static void __wait_on_freeing_inode(struct inode *inode); | 797 | static void __wait_on_freeing_inode(struct inode *inode); |