aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Weiner <hannes@cmpxchg.org>2014-10-09 18:27:39 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 22:25:55 -0400
commit1f13ae399c58af5a05b5cee61da864e1f4071de4 (patch)
treea818d95f7201a3bac11ab1b874e3717d24708327
parentf606b77f1a9e362451aca8f81d8f36a3a112139e (diff)
mm: remove noisy remainder of the scan_unevictable interface
The deprecation warnings for the scan_unevictable interface triggers by scripts doing `sysctl -a | grep something else'. This is annoying and not helpful. The interface has been defunct since 264e56d8247e ("mm: disable user interface to manually rescue unevictable pages"), which was in 2011, and there haven't been any reports of usecases for it, only reports that the deprecation warnings are annying. It's unlikely that anybody is using this interface specifically at this point, so remove it. Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--Documentation/ABI/stable/sysfs-devices-node8
-rw-r--r--drivers/base/node.c3
-rw-r--r--include/linux/swap.h16
-rw-r--r--kernel/sysctl.c7
-rw-r--r--mm/vmscan.c63
5 files changed, 0 insertions, 97 deletions
diff --git a/Documentation/ABI/stable/sysfs-devices-node b/Documentation/ABI/stable/sysfs-devices-node
index ce259c13c36a..5b2d0f08867c 100644
--- a/Documentation/ABI/stable/sysfs-devices-node
+++ b/Documentation/ABI/stable/sysfs-devices-node
@@ -85,14 +85,6 @@ Description:
85 will be compacted. When it completes, memory will be freed 85 will be compacted. When it completes, memory will be freed
86 into blocks which have as many contiguous pages as possible 86 into blocks which have as many contiguous pages as possible
87 87
88What: /sys/devices/system/node/nodeX/scan_unevictable_pages
89Date: October 2008
90Contact: Lee Schermerhorn <lee.schermerhorn@hp.com>
91Description:
92 When set, it triggers scanning the node's unevictable lists
93 and move any pages that have become evictable onto the respective
94 zone's inactive list. See mm/vmscan.c
95
96What: /sys/devices/system/node/nodeX/hugepages/hugepages-<size>/ 88What: /sys/devices/system/node/nodeX/hugepages/hugepages-<size>/
97Date: December 2009 89Date: December 2009
98Contact: Lee Schermerhorn <lee.schermerhorn@hp.com> 90Contact: Lee Schermerhorn <lee.schermerhorn@hp.com>
diff --git a/drivers/base/node.c b/drivers/base/node.c
index d51c49c9bafa..472168cd0c97 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -289,8 +289,6 @@ static int register_node(struct node *node, int num, struct node *parent)
289 device_create_file(&node->dev, &dev_attr_distance); 289 device_create_file(&node->dev, &dev_attr_distance);
290 device_create_file(&node->dev, &dev_attr_vmstat); 290 device_create_file(&node->dev, &dev_attr_vmstat);
291 291
292 scan_unevictable_register_node(node);
293
294 hugetlb_register_node(node); 292 hugetlb_register_node(node);
295 293
296 compaction_register_node(node); 294 compaction_register_node(node);
@@ -314,7 +312,6 @@ void unregister_node(struct node *node)
314 device_remove_file(&node->dev, &dev_attr_distance); 312 device_remove_file(&node->dev, &dev_attr_distance);
315 device_remove_file(&node->dev, &dev_attr_vmstat); 313 device_remove_file(&node->dev, &dev_attr_vmstat);
316 314
317 scan_unevictable_unregister_node(node);
318 hugetlb_unregister_node(node); /* no-op, if memoryless node */ 315 hugetlb_unregister_node(node); /* no-op, if memoryless node */
319 316
320 device_unregister(&node->dev); 317 device_unregister(&node->dev);
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 1b72060f093a..ea4f926e6b9b 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -354,22 +354,6 @@ static inline int zone_reclaim(struct zone *z, gfp_t mask, unsigned int order)
354extern int page_evictable(struct page *page); 354extern int page_evictable(struct page *page);
355extern void check_move_unevictable_pages(struct page **, int nr_pages); 355extern void check_move_unevictable_pages(struct page **, int nr_pages);
356 356
357extern unsigned long scan_unevictable_pages;
358extern int scan_unevictable_handler(struct ctl_table *, int,
359 void __user *, size_t *, loff_t *);
360#ifdef CONFIG_NUMA
361extern int scan_unevictable_register_node(struct node *node);
362extern void scan_unevictable_unregister_node(struct node *node);
363#else
364static inline int scan_unevictable_register_node(struct node *node)
365{
366 return 0;
367}
368static inline void scan_unevictable_unregister_node(struct node *node)
369{
370}
371#endif
372
373extern int kswapd_run(int nid); 357extern int kswapd_run(int nid);
374extern void kswapd_stop(int nid); 358extern void kswapd_stop(int nid);
375#ifdef CONFIG_MEMCG 359#ifdef CONFIG_MEMCG
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 75875a741b5e..91180987e40e 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1460,13 +1460,6 @@ static struct ctl_table vm_table[] = {
1460 .extra2 = &one, 1460 .extra2 = &one,
1461 }, 1461 },
1462#endif 1462#endif
1463 {
1464 .procname = "scan_unevictable_pages",
1465 .data = &scan_unevictable_pages,
1466 .maxlen = sizeof(scan_unevictable_pages),
1467 .mode = 0644,
1468 .proc_handler = scan_unevictable_handler,
1469 },
1470#ifdef CONFIG_MEMORY_FAILURE 1463#ifdef CONFIG_MEMORY_FAILURE
1471 { 1464 {
1472 .procname = "memory_failure_early_kill", 1465 .procname = "memory_failure_early_kill",
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 1a71b8b1ea34..af72fe8e8d74 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -3797,66 +3797,3 @@ void check_move_unevictable_pages(struct page **pages, int nr_pages)
3797 } 3797 }
3798} 3798}
3799#endif /* CONFIG_SHMEM */ 3799#endif /* CONFIG_SHMEM */
3800
3801static void warn_scan_unevictable_pages(void)
3802{
3803 printk_once(KERN_WARNING
3804 "%s: The scan_unevictable_pages sysctl/node-interface has been "
3805 "disabled for lack of a legitimate use case. If you have "
3806 "one, please send an email to linux-mm@kvack.org.\n",
3807 current->comm);
3808}
3809
3810/*
3811 * scan_unevictable_pages [vm] sysctl handler. On demand re-scan of
3812 * all nodes' unevictable lists for evictable pages
3813 */
3814unsigned long scan_unevictable_pages;
3815
3816int scan_unevictable_handler(struct ctl_table *table, int write,
3817 void __user *buffer,
3818 size_t *length, loff_t *ppos)
3819{
3820 warn_scan_unevictable_pages();
3821 proc_doulongvec_minmax(table, write, buffer, length, ppos);
3822 scan_unevictable_pages = 0;
3823 return 0;
3824}
3825
3826#ifdef CONFIG_NUMA
3827/*
3828 * per node 'scan_unevictable_pages' attribute. On demand re-scan of
3829 * a specified node's per zone unevictable lists for evictable pages.
3830 */
3831
3832static ssize_t read_scan_unevictable_node(struct device *dev,
3833 struct device_attribute *attr,
3834 char *buf)
3835{
3836 warn_scan_unevictable_pages();
3837 return sprintf(buf, "0\n"); /* always zero; should fit... */
3838}
3839
3840static ssize_t write_scan_unevictable_node(struct device *dev,
3841 struct device_attribute *attr,
3842 const char *buf, size_t count)
3843{
3844 warn_scan_unevictable_pages();
3845 return 1;
3846}
3847
3848
3849static DEVICE_ATTR(scan_unevictable_pages, S_IRUGO | S_IWUSR,
3850 read_scan_unevictable_node,
3851 write_scan_unevictable_node);
3852
3853int scan_unevictable_register_node(struct node *node)
3854{
3855 return device_create_file(&node->dev, &dev_attr_scan_unevictable_pages);
3856}
3857
3858void scan_unevictable_unregister_node(struct node *node)
3859{
3860 device_remove_file(&node->dev, &dev_attr_scan_unevictable_pages);
3861}
3862#endif