> @@ -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
[EMAIL PROTECTED]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
Devel@openvz.org
https://openvz.org/mailman/listinfo/devel

Reply via email to