diff options
Diffstat (limited to 'mm/vmstat.c')
| -rw-r--r-- | mm/vmstat.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/mm/vmstat.c b/mm/vmstat.c index 879a2be23325..0d5712b0206c 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -921,8 +921,8 @@ static void walk_zones_in_node(struct seq_file *m, pg_data_t *pgdat,  #ifdef CONFIG_PROC_FS  static char * const migratetype_names[MIGRATE_TYPES] = {  	"Unmovable", -	"Reclaimable",  	"Movable", +	"Reclaimable",  	"HighAtomic",  #ifdef CONFIG_CMA  	"CMA", @@ -1379,6 +1379,7 @@ static const struct file_operations proc_vmstat_file_operations = {  #endif /* CONFIG_PROC_FS */  #ifdef CONFIG_SMP +static struct workqueue_struct *vmstat_wq;  static DEFINE_PER_CPU(struct delayed_work, vmstat_work);  int sysctl_stat_interval __read_mostly = HZ;  static cpumask_var_t cpu_stat_off; @@ -1391,7 +1392,7 @@ static void vmstat_update(struct work_struct *w)  		 * to occur in the future. Keep on running the  		 * update worker thread.  		 */ -		schedule_delayed_work_on(smp_processor_id(), +		queue_delayed_work_on(smp_processor_id(), vmstat_wq,  			this_cpu_ptr(&vmstat_work),  			round_jiffies_relative(sysctl_stat_interval));  	} else { @@ -1460,7 +1461,7 @@ static void vmstat_shepherd(struct work_struct *w)  		if (need_update(cpu) &&  			cpumask_test_and_clear_cpu(cpu, cpu_stat_off)) -			schedule_delayed_work_on(cpu, +			queue_delayed_work_on(cpu, vmstat_wq,  				&per_cpu(vmstat_work, cpu), 0);  	put_online_cpus(); @@ -1549,6 +1550,7 @@ static int __init setup_vmstat(void)  	start_shepherd_timer();  	cpu_notifier_register_done(); +	vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);  #endif  #ifdef CONFIG_PROC_FS  	proc_create("buddyinfo", S_IRUGO, NULL, &fragmentation_file_operations);  | 
