| @@ -2252,7 +2252,8 @@ static void reclaim_high(struct mem_cgroup *memcg, · 2251 unmodified lines |
| 2252 | gfp_t gfp_mask) | 2252 | gfp_t gfp_mask) |
| 2253 | { | 2253 | { |
| 2254 | do { | 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 | continue; | 2257 | continue; |
| 2257 | memcg_memory_event(memcg, MEMCG_HIGH); | 2258 | memcg_memory_event(memcg, MEMCG_HIGH); |
| 2258 | try_to_free_mem_cgroup_pages(memcg, nr_pages, gfp_mask, true); | 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 | do { | 2347 | do { |
| 2347 | overage = calculate_overage(page_counter_read(&memcg->memory), | 2348 | overage = calculate_overage(page_counter_read(&memcg->memory), |
| 2348 | READ_ONCE(memcg->high)); | 2349 | READ_ONCE(memcg->memory.high)); |
| 2349 | max_overage = max(overage, max_overage); | 2350 | max_overage = max(overage, max_overage); |
| 2350 | } while ((memcg = parent_mem_cgroup(memcg)) && | 2351 | } while ((memcg = parent_mem_cgroup(memcg)) && |
| 2351 | !mem_cgroup_is_root(memcg)); | 2352 | !mem_cgroup_is_root(memcg)); |
| @@ -2604,7 +2605,8 @@ done_restock: · 252 unmodified lines |
| 2604 | * reclaim, the cost of mismatch is negligible. | 2605 | * reclaim, the cost of mismatch is negligible. |
| 2605 | */ | 2606 | */ |
| 2606 | do { | 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 | /* Don't bother a random interrupted task */ | 2610 | /* Don't bother a random interrupted task */ |
| 2609 | if (in_interrupt()) { | 2611 | if (in_interrupt()) { |
| 2610 | schedule_work(&memcg->high_work); | 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 | while ((parent = parent_mem_cgroup(memcg))) { | 4350 | while ((parent = parent_mem_cgroup(memcg))) { |
| 4349 | unsigned long ceiling = min(READ_ONCE(memcg->memory.max), | 4351 | unsigned long ceiling = min(READ_ONCE(memcg->memory.max), |
| 4350 | READ_ONCE(memcg->high)); | 4352 | READ_ONCE(memcg->memory.high)); |
| 4351 | unsigned long used = page_counter_read(&memcg->memory); | 4353 | unsigned long used = page_counter_read(&memcg->memory); |
| 4352 | | 4354 | |
| 4353 | *pheadroom = min(*pheadroom, ceiling - min(ceiling, used)); | 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 | if (IS_ERR(memcg)) | 5074 | if (IS_ERR(memcg)) |
| 5073 | return ERR_CAST(memcg); | 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 | memcg->soft_limit = PAGE_COUNTER_MAX; | 5078 | memcg->soft_limit = PAGE_COUNTER_MAX; |
| 5077 | if (parent) { | 5079 | if (parent) { |
| 5078 | memcg->swappiness = mem_cgroup_swappiness(parent); | 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 | page_counter_set_max(&memcg->tcpmem, PAGE_COUNTER_MAX); | 5227 | page_counter_set_max(&memcg->tcpmem, PAGE_COUNTER_MAX); |
| 5226 | page_counter_set_min(&memcg->memory, 0); | 5228 | page_counter_set_min(&memcg->memory, 0); |
| 5227 | page_counter_set_low(&memcg->memory, 0); | 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 | memcg->soft_limit = PAGE_COUNTER_MAX; | 5231 | memcg->soft_limit = PAGE_COUNTER_MAX; |
| 5230 | memcg_wb_domain_size_changed(memcg); | 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 | static int memory_high_show(struct seq_file *m, void *v) | 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 | static ssize_t memory_high_write(struct kernfs_open_file *of, | 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 | if (err) | 6044 | if (err) |
| 6042 | return err; | 6045 | return err; |
| 6043 | | 6046 | |
| 6044 | WRITE_ONCE(memcg->high, high); | 6047 | page_counter_set_high(&memcg->memory, high); |
| 6045 | | 6048 | |
| 6046 | for (;;) { | 6049 | for (;;) { |
| 6047 | unsigned long nr_pages = page_counter_read(&memcg->memory); | 6050 | unsigned long nr_pages = page_counter_read(&memcg->memory); |