| @@ -2252,7 +2252,8 @@ static void reclaim_high(struct mem_cgroup *memcg, · 2251 unmodified lines |
| 2252 | 2252 | gfp_t gfp_mask) |
| 2253 | 2253 | { |
| 2254 | 2254 | do { |
| 2255 | | − if (page_counter_read(&memcg->memory) <= READ_ONCE(memcg->high)) |
| 2255 | + if (page_counter_read(&memcg->memory) <= |
| 2256 | + READ_ONCE(memcg->memory.high)) |
| 2256 | 2257 | continue; |
| 2257 | 2258 | memcg_memory_event(memcg, MEMCG_HIGH); |
| 2258 | 2259 | try_to_free_mem_cgroup_pages(memcg, nr_pages, gfp_mask, true); |
| @@ -2345,7 +2346,7 @@ static u64 mem_find_max_overage(struct mem_cgroup *memcg) · 86 unmodified lines |
| 2345 | 2346 | |
| 2346 | 2347 | do { |
| 2347 | 2348 | overage = calculate_overage(page_counter_read(&memcg->memory), |
| 2348 | | − READ_ONCE(memcg->high)); |
| 2349 | + READ_ONCE(memcg->memory.high)); |
| 2349 | 2350 | max_overage = max(overage, max_overage); |
| 2350 | 2351 | } while ((memcg = parent_mem_cgroup(memcg)) && |
| 2351 | 2352 | !mem_cgroup_is_root(memcg)); |
| @@ -2604,7 +2605,8 @@ done_restock: · 252 unmodified lines |
| 2604 | 2605 | * reclaim, the cost of mismatch is negligible. |
| 2605 | 2606 | */ |
| 2606 | 2607 | do { |
| 2607 | | − if (page_counter_read(&memcg->memory) > READ_ONCE(memcg->high)) { |
| 2608 | + if (page_counter_read(&memcg->memory) > |
| 2609 | + READ_ONCE(memcg->memory.high)) { |
| 2608 | 2610 | /* Don't bother a random interrupted task */ |
| 2609 | 2611 | if (in_interrupt()) { |
| 2610 | 2612 | schedule_work(&memcg->high_work); |
| @@ -4347,7 +4349,7 @@ void mem_cgroup_wb_stats(struct bdi_writeback *wb, unsigned long *pfilepages, · 1736 unmodified lines |
| 4347 | 4349 | |
| 4348 | 4350 | while ((parent = parent_mem_cgroup(memcg))) { |
| 4349 | 4351 | unsigned long ceiling = min(READ_ONCE(memcg->memory.max), |
| 4350 | | − READ_ONCE(memcg->high)); |
| 4352 | + READ_ONCE(memcg->memory.high)); |
| 4351 | 4353 | unsigned long used = page_counter_read(&memcg->memory); |
| 4352 | 4354 | |
| 4353 | 4355 | *pheadroom = min(*pheadroom, ceiling - min(ceiling, used)); |
| @@ -5072,7 +5074,7 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) · 718 unmodified lines |
| 5072 | 5074 | if (IS_ERR(memcg)) |
| 5073 | 5075 | return ERR_CAST(memcg); |
| 5074 | 5076 | |
| 5075 | | − WRITE_ONCE(memcg->high, PAGE_COUNTER_MAX); |
| 5077 | + page_counter_set_high(&memcg->memory, PAGE_COUNTER_MAX); |
| 5076 | 5078 | memcg->soft_limit = PAGE_COUNTER_MAX; |
| 5077 | 5079 | if (parent) { |
| 5078 | 5080 | memcg->swappiness = mem_cgroup_swappiness(parent); |
| @@ -5225,7 +5227,7 @@ static void mem_cgroup_css_reset(struct cgroup_subsys_state *css) · 146 unmodified lines |
| 5225 | 5227 | page_counter_set_max(&memcg->tcpmem, PAGE_COUNTER_MAX); |
| 5226 | 5228 | page_counter_set_min(&memcg->memory, 0); |
| 5227 | 5229 | page_counter_set_low(&memcg->memory, 0); |
| 5228 | | − WRITE_ONCE(memcg->high, PAGE_COUNTER_MAX); |
| 5230 | + page_counter_set_high(&memcg->memory, PAGE_COUNTER_MAX); |
| 5229 | 5231 | memcg->soft_limit = PAGE_COUNTER_MAX; |
| 5230 | 5232 | memcg_wb_domain_size_changed(memcg); |
| 5231 | 5233 | } |
| @@ -6024,7 +6026,8 @@ static ssize_t memory_low_write(struct kernfs_open_file *of, · 792 unmodified lines |
| 6024 | 6026 | |
| 6025 | 6027 | static int memory_high_show(struct seq_file *m, void *v) |
| 6026 | 6028 | { |
| 6027 | | − return seq_puts_memcg_tunable(m, READ_ONCE(mem_cgroup_from_seq(m)->high)); |
| 6029 | + return seq_puts_memcg_tunable(m, |
| 6030 | + READ_ONCE(mem_cgroup_from_seq(m)->memory.high)); |
| 6028 | 6031 | } |
| 6029 | 6032 | |
| 6030 | 6033 | static ssize_t memory_high_write(struct kernfs_open_file *of, |
| @@ -6041,7 +6044,7 @@ static ssize_t memory_high_write(struct kernfs_open_file *of, · 10 unmodified lines |
| 6041 | 6044 | if (err) |
| 6042 | 6045 | return err; |
| 6043 | 6046 | |
| 6044 | | − WRITE_ONCE(memcg->high, high); |
| 6047 | + page_counter_set_high(&memcg->memory, high); |
| 6045 | 6048 | |
| 6046 | 6049 | for (;;) { |
| 6047 | 6050 | unsigned long nr_pages = page_counter_read(&memcg->memory); |