|
@@ -4992,6 +4992,7 @@ static ssize_t memory_high_write(struct kernfs_open_file *of,
|
|
|
char *buf, size_t nbytes, loff_t off)
|
|
|
{
|
|
|
struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
|
|
|
+ unsigned long nr_pages;
|
|
|
unsigned long high;
|
|
|
int err;
|
|
|
|
|
@@ -5002,6 +5003,11 @@ static ssize_t memory_high_write(struct kernfs_open_file *of,
|
|
|
|
|
|
memcg->high = high;
|
|
|
|
|
|
+ nr_pages = page_counter_read(&memcg->memory);
|
|
|
+ if (nr_pages > high)
|
|
|
+ try_to_free_mem_cgroup_pages(memcg, nr_pages - high,
|
|
|
+ GFP_KERNEL, true);
|
|
|
+
|
|
|
memcg_wb_domain_size_changed(memcg);
|
|
|
return nbytes;
|
|
|
}
|