diff -NurpP --minimal linux-2.6.32.6-vs2.3.0.36.28/include/linux/memcontrol.h linux-2.6.32.6-vs2.3.0.36.28.1/include/linux/memcontrol.h --- linux-2.6.32.6-vs2.3.0.36.28/include/linux/memcontrol.h 2009-12-03 20:02:55.000000000 +0100 +++ linux-2.6.32.6-vs2.3.0.36.28.1/include/linux/memcontrol.h 2010-01-27 21:44:15.000000000 +0100 @@ -69,6 +69,8 @@ extern void mem_cgroup_out_of_memory(str int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *mem); extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); +extern u64 mem_cgroup_res_read_u64(struct mem_cgroup *mem, int member); +extern u64 mem_cgroup_memsw_read_u64(struct mem_cgroup *mem, int member); static inline int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup) diff -NurpP --minimal linux-2.6.32.6-vs2.3.0.36.28/kernel/vserver/limit.c linux-2.6.32.6-vs2.3.0.36.28.1/kernel/vserver/limit.c --- linux-2.6.32.6-vs2.3.0.36.28/kernel/vserver/limit.c 2009-12-03 20:04:56.000000000 +0100 +++ linux-2.6.32.6-vs2.3.0.36.28.1/kernel/vserver/limit.c 2010-01-27 21:47:11.000000000 +0100 @@ -12,6 +12,8 @@ #include #include +#include +#include #include #include #include @@ -281,6 +283,16 @@ void vx_vsi_meminfo(struct sysinfo *val) val->bufferram = 0; val->totalhigh = 0; val->freehigh = 0; + + { + struct mem_cgroup *mcg = mem_cgroup_from_task(current); + printk("mcg %p: res %lld,%lld,%lld,%lld,%lld\n", mcg, + mem_cgroup_res_read_u64(mcg, RES_USAGE), + mem_cgroup_res_read_u64(mcg, RES_MAX_USAGE), + mem_cgroup_res_read_u64(mcg, RES_LIMIT), + mem_cgroup_res_read_u64(mcg, RES_FAILCNT), + mem_cgroup_res_read_u64(mcg, RES_SOFT_LIMIT)); + } return; } @@ -309,6 +321,16 @@ void vx_vsi_swapinfo(struct sysinfo *val val->totalswap = totalswap; val->freeswap = freeswap; + + { + struct mem_cgroup *mcg = mem_cgroup_from_task(current); + printk("mcg %p: swp %lld,%lld,%lld,%lld,%lld\n", mcg, + mem_cgroup_memsw_read_u64(mcg, RES_USAGE), + mem_cgroup_memsw_read_u64(mcg, RES_MAX_USAGE), + mem_cgroup_memsw_read_u64(mcg, RES_LIMIT), + mem_cgroup_memsw_read_u64(mcg, RES_FAILCNT), + mem_cgroup_memsw_read_u64(mcg, RES_SOFT_LIMIT)); + } return; } diff -NurpP --minimal linux-2.6.32.6-vs2.3.0.36.28/Makefile linux-2.6.32.6-vs2.3.0.36.28.1/Makefile --- linux-2.6.32.6-vs2.3.0.36.28/Makefile 2010-01-27 03:46:49.000000000 +0100 +++ linux-2.6.32.6-vs2.3.0.36.28.1/Makefile 2010-01-27 21:50:39.000000000 +0100 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 32 -EXTRAVERSION = .6-vs2.3.0.36.28 +EXTRAVERSION = .6-vs2.3.0.36.28.1 NAME = Man-Eating Seals of Antiquity # *DOCUMENTATION* diff -NurpP --minimal linux-2.6.32.6-vs2.3.0.36.28/mm/memcontrol.c linux-2.6.32.6-vs2.3.0.36.28.1/mm/memcontrol.c --- linux-2.6.32.6-vs2.3.0.36.28/mm/memcontrol.c 2010-01-26 20:35:35.000000000 +0100 +++ linux-2.6.32.6-vs2.3.0.36.28.1/mm/memcontrol.c 2010-01-27 21:43:58.000000000 +0100 @@ -549,6 +549,16 @@ struct mem_cgroup *mem_cgroup_from_task( struct mem_cgroup, css); } +u64 mem_cgroup_res_read_u64(struct mem_cgroup *mem, int member) +{ + return res_counter_read_u64(&mem->res, member); +} + +u64 mem_cgroup_memsw_read_u64(struct mem_cgroup *mem, int member) +{ + return res_counter_read_u64(&mem->memsw, member); +} + static struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm) { struct mem_cgroup *mem = NULL;