diff options
author | Dave Chinner <dchinner@redhat.com> | 2013-08-27 20:18:16 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-09-10 18:56:32 -0400 |
commit | a0b02131c5fcd8545b867db72224b3659e813f10 (patch) | |
tree | 3ba5156965ca4625cd5a4ad78405180143eaf15c /mm/vmscan.c | |
parent | 70534a739c12b908789e27b08512d2615ba40f2f (diff) |
shrinker: Kill old ->shrink API.
There are no more users of this API, so kill it dead, dead, dead and
quietly bury the corpse in a shallow, unmarked grave in a dark forest deep
in the hills...
[glommer@openvz.org: added flowers to the grave]
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Glauber Costa <glommer@openvz.org>
Reviewed-by: Greg Thelen <gthelen@google.com>
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 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 41 |
1 files changed, 8 insertions, 33 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 799ebceeb4f7..e36454220614 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -194,14 +194,6 @@ void unregister_shrinker(struct shrinker *shrinker) | |||
194 | } | 194 | } |
195 | EXPORT_SYMBOL(unregister_shrinker); | 195 | EXPORT_SYMBOL(unregister_shrinker); |
196 | 196 | ||
197 | static inline int do_shrinker_shrink(struct shrinker *shrinker, | ||
198 | struct shrink_control *sc, | ||
199 | unsigned long nr_to_scan) | ||
200 | { | ||
201 | sc->nr_to_scan = nr_to_scan; | ||
202 | return (*shrinker->shrink)(shrinker, sc); | ||
203 | } | ||
204 | |||
205 | #define SHRINK_BATCH 128 | 197 | #define SHRINK_BATCH 128 |
206 | 198 | ||
207 | static unsigned long | 199 | static unsigned long |
@@ -218,10 +210,7 @@ shrink_slab_node(struct shrink_control *shrinkctl, struct shrinker *shrinker, | |||
218 | long batch_size = shrinker->batch ? shrinker->batch | 210 | long batch_size = shrinker->batch ? shrinker->batch |
219 | : SHRINK_BATCH; | 211 | : SHRINK_BATCH; |
220 | 212 | ||
221 | if (shrinker->count_objects) | 213 | max_pass = shrinker->count_objects(shrinker, shrinkctl); |
222 | max_pass = shrinker->count_objects(shrinker, shrinkctl); | ||
223 | else | ||
224 | max_pass = do_shrinker_shrink(shrinker, shrinkctl, 0); | ||
225 | if (max_pass == 0) | 214 | if (max_pass == 0) |
226 | return 0; | 215 | return 0; |
227 | 216 | ||
@@ -240,7 +229,7 @@ shrink_slab_node(struct shrink_control *shrinkctl, struct shrinker *shrinker, | |||
240 | if (total_scan < 0) { | 229 | if (total_scan < 0) { |
241 | printk(KERN_ERR | 230 | printk(KERN_ERR |
242 | "shrink_slab: %pF negative objects to delete nr=%ld\n", | 231 | "shrink_slab: %pF negative objects to delete nr=%ld\n", |
243 | shrinker->shrink, total_scan); | 232 | shrinker->scan_objects, total_scan); |
244 | total_scan = max_pass; | 233 | total_scan = max_pass; |
245 | } | 234 | } |
246 | 235 | ||
@@ -272,27 +261,13 @@ shrink_slab_node(struct shrink_control *shrinkctl, struct shrinker *shrinker, | |||
272 | max_pass, delta, total_scan); | 261 | max_pass, delta, total_scan); |
273 | 262 | ||
274 | while (total_scan >= batch_size) { | 263 | while (total_scan >= batch_size) { |
264 | unsigned long ret; | ||
275 | 265 | ||
276 | if (shrinker->scan_objects) { | 266 | shrinkctl->nr_to_scan = batch_size; |
277 | unsigned long ret; | 267 | ret = shrinker->scan_objects(shrinker, shrinkctl); |
278 | shrinkctl->nr_to_scan = batch_size; | 268 | if (ret == SHRINK_STOP) |
279 | ret = shrinker->scan_objects(shrinker, shrinkctl); | 269 | break; |
280 | 270 | freed += ret; | |
281 | if (ret == SHRINK_STOP) | ||
282 | break; | ||
283 | freed += ret; | ||
284 | } else { | ||
285 | int nr_before; | ||
286 | long ret; | ||
287 | |||
288 | nr_before = do_shrinker_shrink(shrinker, shrinkctl, 0); | ||
289 | ret = do_shrinker_shrink(shrinker, shrinkctl, | ||
290 | batch_size); | ||
291 | if (ret == -1) | ||
292 | break; | ||
293 | if (ret < nr_before) | ||
294 | freed += nr_before - ret; | ||
295 | } | ||
296 | 271 | ||
297 | count_vm_events(SLABS_SCANNED, batch_size); | 272 | count_vm_events(SLABS_SCANNED, batch_size); |
298 | total_scan -= batch_size; | 273 | total_scan -= batch_size; |