diff options
Diffstat (limited to 'include/linux/memcontrol.h')
| -rw-r--r-- | include/linux/memcontrol.h | 39 | 
1 files changed, 23 insertions, 16 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index e391e3c56de5..922a7f600465 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -282,20 +282,6 @@ struct mem_cgroup {  	MEMCG_PADDING(_pad1_); -	/* -	 * set > 0 if pages under this cgroup are moving to other cgroup. -	 */ -	atomic_t		moving_account; -	struct task_struct	*move_lock_task; - -	/* Legacy local VM stats and events */ -	struct memcg_vmstats_percpu __percpu *vmstats_local; - -	/* Subtree VM stats and events (batched updates) */ -	struct memcg_vmstats_percpu __percpu *vmstats_percpu; - -	MEMCG_PADDING(_pad2_); -  	atomic_long_t		vmstats[MEMCG_NR_STAT];  	atomic_long_t		vmevents[NR_VM_EVENT_ITEMS]; @@ -317,6 +303,20 @@ struct mem_cgroup {  	struct list_head objcg_list; /* list of inherited objcgs */  #endif +	MEMCG_PADDING(_pad2_); + +	/* +	 * set > 0 if pages under this cgroup are moving to other cgroup. +	 */ +	atomic_t		moving_account; +	struct task_struct	*move_lock_task; + +	/* Legacy local VM stats and events */ +	struct memcg_vmstats_percpu __percpu *vmstats_local; + +	/* Subtree VM stats and events (batched updates) */ +	struct memcg_vmstats_percpu __percpu *vmstats_percpu; +  #ifdef CONFIG_CGROUP_WRITEBACK  	struct list_head cgwb_list;  	struct wb_domain cgwb_domain; @@ -900,12 +900,19 @@ static inline void count_memcg_event_mm(struct mm_struct *mm,  static inline void memcg_memory_event(struct mem_cgroup *memcg,  				      enum memcg_memory_event event)  { +	bool swap_event = event == MEMCG_SWAP_HIGH || event == MEMCG_SWAP_MAX || +			  event == MEMCG_SWAP_FAIL; +  	atomic_long_inc(&memcg->memory_events_local[event]); -	cgroup_file_notify(&memcg->events_local_file); +	if (!swap_event) +		cgroup_file_notify(&memcg->events_local_file);  	do {  		atomic_long_inc(&memcg->memory_events[event]); -		cgroup_file_notify(&memcg->events_file); +		if (swap_event) +			cgroup_file_notify(&memcg->swap_events_file); +		else +			cgroup_file_notify(&memcg->events_file);  		if (!cgroup_subsys_on_dfl(memory_cgrp_subsys))  			break;  | 
