mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	mm: prepare for removal of obsolete /proc/sys/vm/nr_pdflush_threads
Since per-BDI flusher threads were introduced in 2.6, the pdflush mechanism is not used any more. But the old interface exported through /proc/sys/vm/nr_pdflush_threads still exists and is obviously useless. For back-compatibility, printk warning information and return 2 to notify the users that the interface is removed. Signed-off-by: Wanpeng Li <liwp@linux.vnet.ibm.com> Cc: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									deaf386ee5
								
							
						
					
					
						commit
						3965c9ae47
					
				
					 9 changed files with 40 additions and 27 deletions
				
			
		|  | @ -0,0 +1,5 @@ | |||
| What:		/proc/sys/vm/nr_pdflush_threads | ||||
| Date:		June 2012 | ||||
| Contact:	Wanpeng Li <liwp@linux.vnet.ibm.com> | ||||
| Description: Since pdflush is replaced by per-BDI flusher, the interface of old pdflush | ||||
|              exported in /proc/sys/vm/ should be removed. | ||||
|  | @ -13,6 +13,14 @@ Who:	Jim Cromie <jim.cromie@gmail.com>, Jason Baron <jbaron@redhat.com> | |||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What: /proc/sys/vm/nr_pdflush_threads | ||||
| When: 2012 | ||||
| Why: Since pdflush is deprecated, the interface exported in /proc/sys/vm/ | ||||
|      should be removed. | ||||
| Who: Wanpeng Li <liwp@linux.vnet.ibm.com> | ||||
| 
 | ||||
| --------------------------- | ||||
| 
 | ||||
| What:	CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle | ||||
| When:	2012 | ||||
| Why:	This optional sub-feature of APM is of dubious reliability, | ||||
|  |  | |||
|  | @ -42,7 +42,6 @@ Currently, these files are in /proc/sys/vm: | |||
| - mmap_min_addr | ||||
| - nr_hugepages | ||||
| - nr_overcommit_hugepages | ||||
| - nr_pdflush_threads | ||||
| - nr_trim_pages         (only if CONFIG_MMU=n) | ||||
| - numa_zonelist_order | ||||
| - oom_dump_tasks | ||||
|  | @ -426,16 +425,6 @@ See Documentation/vm/hugetlbpage.txt | |||
| 
 | ||||
| ============================================================== | ||||
| 
 | ||||
| nr_pdflush_threads | ||||
| 
 | ||||
| The current number of pdflush threads.  This value is read-only. | ||||
| The value changes according to the number of dirty pages in the system. | ||||
| 
 | ||||
| When necessary, additional pdflush threads are created, one per second, up to | ||||
| nr_pdflush_threads_max. | ||||
| 
 | ||||
| ============================================================== | ||||
| 
 | ||||
| nr_trim_pages | ||||
| 
 | ||||
| This is available only on NOMMU kernels. | ||||
|  |  | |||
|  | @ -52,11 +52,6 @@ struct wb_writeback_work { | |||
| 	struct completion *done;	/* set if the caller waits */ | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * We don't actually have pdflush, but this one is exported though /proc... | ||||
|  */ | ||||
| int nr_pdflush_threads; | ||||
| 
 | ||||
| /**
 | ||||
|  * writeback_in_progress - determine whether there is writeback in progress | ||||
|  * @bdi: the device's backing_dev_info structure. | ||||
|  |  | |||
|  | @ -17,6 +17,7 @@ | |||
| #include <linux/timer.h> | ||||
| #include <linux/writeback.h> | ||||
| #include <linux/atomic.h> | ||||
| #include <linux/sysctl.h> | ||||
| 
 | ||||
| struct page; | ||||
| struct device; | ||||
|  | @ -304,6 +305,8 @@ void clear_bdi_congested(struct backing_dev_info *bdi, int sync); | |||
| void set_bdi_congested(struct backing_dev_info *bdi, int sync); | ||||
| long congestion_wait(int sync, long timeout); | ||||
| long wait_iff_congested(struct zone *zone, int sync, long timeout); | ||||
| int pdflush_proc_obsolete(struct ctl_table *table, int write, | ||||
| 		void __user *buffer, size_t *lenp, loff_t *ppos); | ||||
| 
 | ||||
| static inline bool bdi_cap_writeback_dirty(struct backing_dev_info *bdi) | ||||
| { | ||||
|  |  | |||
|  | @ -189,9 +189,4 @@ void tag_pages_for_writeback(struct address_space *mapping, | |||
| 
 | ||||
| void account_page_redirty(struct page *page); | ||||
| 
 | ||||
| /* pdflush.c */ | ||||
| extern int nr_pdflush_threads;	/* Global so it can be exported to sysctl
 | ||||
| 				   read-only. */ | ||||
| 
 | ||||
| 
 | ||||
| #endif		/* WRITEBACK_H */ | ||||
|  |  | |||
|  | @ -1101,11 +1101,9 @@ static struct ctl_table vm_table[] = { | |||
| 		.extra1		= &zero, | ||||
| 	}, | ||||
| 	{ | ||||
| 		.procname	= "nr_pdflush_threads", | ||||
| 		.data		= &nr_pdflush_threads, | ||||
| 		.maxlen		= sizeof nr_pdflush_threads, | ||||
| 		.mode		= 0444 /* read-only*/, | ||||
| 		.proc_handler	= proc_dointvec, | ||||
| 		.procname       = "nr_pdflush_threads", | ||||
| 		.mode           = 0444 /* read-only */, | ||||
| 		.proc_handler   = pdflush_proc_obsolete, | ||||
| 	}, | ||||
| 	{ | ||||
| 		.procname	= "swappiness", | ||||
|  |  | |||
|  | @ -147,7 +147,7 @@ static const struct bin_table bin_vm_table[] = { | |||
| 	{ CTL_INT,	VM_DIRTY_RATIO,			"dirty_ratio" }, | ||||
| 	/* VM_DIRTY_WB_CS "dirty_writeback_centisecs" no longer used */ | ||||
| 	/* VM_DIRTY_EXPIRE_CS "dirty_expire_centisecs" no longer used */ | ||||
| 	{ CTL_INT,	VM_NR_PDFLUSH_THREADS,		"nr_pdflush_threads" }, | ||||
| 	/* VM_NR_PDFLUSH_THREADS "nr_pdflush_threads" no longer used */ | ||||
| 	{ CTL_INT,	VM_OVERCOMMIT_RATIO,		"overcommit_ratio" }, | ||||
| 	/* VM_PAGEBUF unused */ | ||||
| 	/* VM_HUGETLB_PAGES "nr_hugepages" no longer used */ | ||||
|  |  | |||
|  | @ -886,3 +886,23 @@ long wait_iff_congested(struct zone *zone, int sync, long timeout) | |||
| 	return ret; | ||||
| } | ||||
| EXPORT_SYMBOL(wait_iff_congested); | ||||
| 
 | ||||
| int pdflush_proc_obsolete(struct ctl_table *table, int write, | ||||
| 			void __user *buffer, size_t *lenp, loff_t *ppos) | ||||
| { | ||||
| 	char kbuf[] = "0\n"; | ||||
| 
 | ||||
| 	if (*ppos) { | ||||
| 		*lenp = 0; | ||||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	if (copy_to_user(buffer, kbuf, sizeof(kbuf))) | ||||
| 		return -EFAULT; | ||||
| 	printk_once(KERN_WARNING "%s exported in /proc is scheduled for removal\n", | ||||
| 			table->procname); | ||||
| 
 | ||||
| 	*lenp = 2; | ||||
| 	*ppos += *lenp; | ||||
| 	return 2; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Wanpeng Li
						Wanpeng Li