On 2017年10月17日 15:54, Michal Hocko wrote: > On Tue 17-10-17 09:20:58, Kemi Wang wrote: > [...] > > Other than two remarks below, it looks good to me and it also looks > simpler. > >> diff --git a/mm/vmstat.c b/mm/vmstat.c >> index 4bb13e7..e746ed1 100644 >> --- a/mm/vmstat.c >> +++ b/mm/vmstat.c >> @@ -32,6 +32,76 @@ >> >> #define NUMA_STATS_THRESHOLD (U16_MAX - 2) >> >> +#ifdef CONFIG_NUMA >> +int sysctl_vm_numa_stat = ENABLE_NUMA_STAT; >> +static DEFINE_MUTEX(vm_numa_stat_lock); > > You can scope this mutex to the sysctl handler function > OK, thanks. >> +int sysctl_vm_numa_stat_handler(struct ctl_table *table, int write, >> + void __user *buffer, size_t *length, loff_t *ppos) >> +{ >> + int ret, oldval; >> + >> + mutex_lock(&vm_numa_stat_lock); >> + if (write) >> + oldval = sysctl_vm_numa_stat; >> + ret = proc_dointvec(table, write, buffer, length, ppos); >> + if (ret || !write) >> + goto out; >> + >> + if (oldval == sysctl_vm_numa_stat) >> + goto out; >> + else if (oldval == DISABLE_NUMA_STAT) { > > So basically any value will enable numa stats. This means that we would > never be able to extend this interface to e.g. auto mode (say value 2). > I guess you meant to check sysctl_vm_numa_stat == ENABLE_NUMA_STAT? > I meant to make it more general other than ENABLE_NUMA_STAT(non 0 is enough), but it will make it hard to scale, as you said. So, it would be like this: 0 -- disable 1 -- enable other value is invalid. May add option 2 later for auto if necessary:) >> + static_branch_enable(&vm_numa_stat_key); >> + pr_info("enable numa statistics\n"); >> + } else if (sysctl_vm_numa_stat == DISABLE_NUMA_STAT) { >> + static_branch_disable(&vm_numa_stat_key); >> + invalid_numa_statistics(); >> + pr_info("disable numa statistics, and clear numa counters\n"); >> + } >> + >> +out: >> + mutex_unlock(&vm_numa_stat_lock); >> + return ret; >> +} >> +#endif >> + >> #ifdef CONFIG_VM_EVENT_COUNTERS >> DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}}; >> EXPORT_PER_CPU_SYMBOL(vm_event_states); >> -- >> 2.7.4 >> > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>