The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-123.1.2.vz7.4.10 ------> commit 5f52f9964f8b79ebf893aca281fdeab82bde4495 Author: Vladimir Davydov <vdavy...@parallels.com> Date: Thu May 7 13:11:38 2015 +0400
ms/sysfs: do not account sysfs_ino_ida allocations to memcg Patch has been added to the mm tree: http://www.spinics.net/lists/stable/msg89832.html ================================================== sysfs_ino_ida is used for sysfs inode number allocations. Since IDA has a layered structure, different IDs can reside on the same layer, which is currently accounted to some memory cgroup. The problem is that each kmem cache of a memory cgroup has its own directory on sysfs (under /sys/fs/kernel/<cache-name>/cgroup). If the inode number of such a directory or any file in it gets allocated from a layer accounted to the cgroup which the cache is created for, the cgroup will get pinned for good, because one has to free all kmem allocations accounted to a cgroup in order to release it and destroy all its kmem caches. That said we must not account layers of sysfs_ino_ida to any memory cgroup. Signed-off-by: Vladimir Davydov <vdavy...@parallels.com> --- fs/sysfs/dir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 2c68c20..e12273c 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -265,7 +265,7 @@ static int sysfs_alloc_ino(unsigned int *pino) spin_unlock(&sysfs_ino_lock); if (rc == -EAGAIN) { - if (ida_pre_get(&sysfs_ino_ida, GFP_KERNEL)) + if (ida_pre_get(&sysfs_ino_ida, GFP_KERNEL | __GFP_NOACCOUNT)) goto retry; rc = -ENOMEM; } _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel