> @@ -1892,3 +1892,36 @@ int valid_swaphandles(swp_entry_t entry, unsigned long *offset)
> *offset = ++toff;
> return nr_pages? ++nr_pages: 0;
> }
> +
> +#ifdef CONFIG_CGROUP_SWAP_RES_CTLR
> +int swap_cgroup_vm_swap_full(struct page *page)
> +{
> + int ret;
> + struct swap_info_struct *p;
> + struct mem_cgroup *mem;
> + u64 usage;
> + u64 limit;
> + swp_entry_t entry;
> +
> + VM_BUG_ON(!PageLocked(page));
> + VM_BUG_ON(!PageSwapCache(page));
> +
> + ret = 0;
> + entry.val = page_private(page);
> + p = swap_info_get(entry);
> + if (!p)
> + goto out;
> +
> + mem = p->memcg[swp_offset(entry)];
> + usage = swap_cgroup_read_usage(mem) / PAGE_SIZE;
> + limit = swap_cgroup_read_limit(mem) / PAGE_SIZE;
> + limit = (limit < total_swap_pages) ? limit : total_swap_pages;
> +
> + ret = usage * 2 > limit;
> +
> + spin_unlock(&swap_lock);
> +
> +out:
> + return ret;
> +}
> +#endif
shouldn't it check the global usage (nr_swap_pages) as well?
YAMAMOTO Takashi
_______________________________________________
Containers mailing list
Containers@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers