From mboxrd@z Thu Jan 1 00:00:00 1970 From: akpm@linux-foundation.org Subject: + mm-memcontrol-zap-memcg_kmem_online-helper.patch added to -mm tree Date: Tue, 09 Feb 2016 13:18:09 -0800 Message-ID: <56ba5791.MJS9jWS7bAga2xyu%akpm@linux-foundation.org> Reply-To: linux-kernel@vger.kernel.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-path: Received: from mail.linuxfoundation.org ([140.211.169.12]:49140 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755077AbcBIVSK (ORCPT ); Tue, 9 Feb 2016 16:18:10 -0500 Sender: mm-commits-owner@vger.kernel.org List-Id: mm-commits@vger.kernel.org To: vdavydov@virtuozzo.com, hannes@cmpxchg.org, mhocko@kernel.org, mm-commits@vger.kernel.org The patch titled Subject: mm: memcontrol: zap memcg_kmem_online helper has been added to the -mm tree. Its filename is mm-memcontrol-zap-memcg_kmem_online-helper.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-memcontrol-zap-memcg_kmem_online-helper.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-memcontrol-zap-memcg_kmem_online-helper.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Vladimir Davydov Subject: mm: memcontrol: zap memcg_kmem_online helper As kmem accounting is now either enabled for all cgroups or disabled system-wide, there's no point in having memcg_kmem_online() helper - instead one can use memcg_kmem_enabled() and mem_cgroup_online(), as shrink_slab() now does. There are only two places left where this helper is used - __memcg_kmem_charge() and memcg_create_kmem_cache(). The former can only be called if memcg_kmem_enabled() returned true. Since the cgroup it operates on is online, mem_cgroup_is_root() check will be enough. memcg_create_kmem_cache() can't use mem_cgroup_online() helper instead of memcg_kmem_online(), because it relies on the fact that in memcg_offline_kmem() memcg->kmem_state is changed before memcg_deactivate_kmem_caches() is called, but there we can just open-code the check. Signed-off-by: Vladimir Davydov Acked-by: Johannes Weiner Cc: Michal Hocko Signed-off-by: Andrew Morton --- include/linux/memcontrol.h | 10 ---------- mm/memcontrol.c | 2 +- mm/slab_common.c | 2 +- 3 files changed, 2 insertions(+), 12 deletions(-) diff -puN include/linux/memcontrol.h~mm-memcontrol-zap-memcg_kmem_online-helper include/linux/memcontrol.h --- a/include/linux/memcontrol.h~mm-memcontrol-zap-memcg_kmem_online-helper +++ a/include/linux/memcontrol.h @@ -795,11 +795,6 @@ static inline bool memcg_kmem_enabled(vo return static_branch_unlikely(&memcg_kmem_enabled_key); } -static inline bool memcg_kmem_online(struct mem_cgroup *memcg) -{ - return memcg->kmem_state == KMEM_ONLINE; -} - /* * In general, we'll do everything in our power to not incur in any overhead * for non-memcg users for the kmem functions. Not even a function call, if we @@ -908,11 +903,6 @@ static inline bool memcg_kmem_enabled(vo { return false; } - -static inline bool memcg_kmem_online(struct mem_cgroup *memcg) -{ - return false; -} static inline int memcg_kmem_charge(struct page *page, gfp_t gfp, int order) { diff -puN mm/memcontrol.c~mm-memcontrol-zap-memcg_kmem_online-helper mm/memcontrol.c --- a/mm/memcontrol.c~mm-memcontrol-zap-memcg_kmem_online-helper +++ a/mm/memcontrol.c @@ -2346,7 +2346,7 @@ int __memcg_kmem_charge(struct page *pag int ret = 0; memcg = get_mem_cgroup_from_mm(current->mm); - if (memcg_kmem_online(memcg)) + if (!mem_cgroup_is_root(memcg)) ret = __memcg_kmem_charge_memcg(page, gfp, order, memcg); css_put(&memcg->css); return ret; diff -puN mm/slab_common.c~mm-memcontrol-zap-memcg_kmem_online-helper mm/slab_common.c --- a/mm/slab_common.c~mm-memcontrol-zap-memcg_kmem_online-helper +++ a/mm/slab_common.c @@ -510,7 +510,7 @@ void memcg_create_kmem_cache(struct mem_ * The memory cgroup could have been offlined while the cache * creation work was pending. */ - if (!memcg_kmem_online(memcg)) + if (memcg->kmem_state != KMEM_ONLINE) goto out_unlock; idx = memcg_cache_id(memcg); _ Patches currently in -mm which might be from vdavydov@virtuozzo.com are mm-vmscan-do-not-clear-shrinker_numa_aware-if-nr_node_ids-==-1.patch mm-migrate-do-not-touch-page-mem_cgroup-of-live-pages-fix-2.patch mm-memcontrol-do-not-bypass-slab-charge-if-memcg-is-offline.patch mm-memcontrol-make-tree_statevents-fetch-all-stats.patch mm-memcontrol-make-tree_statevents-fetch-all-stats-fix.patch mm-memcontrol-report-slab-usage-in-cgroup2-memorystat.patch mm-memcontrol-report-kernel-stack-usage-in-cgroup2-memorystat.patch mm-memcontrol-report-kernel-stack-usage-in-cgroup2-memorystat-v2.patch proc-kpageflags-return-kpf_buddy-for-tail-buddy-pages-fix.patch tools-vm-page-typesc-add-memory-cgroup-dumping-and-filtering-fix.patch mm-memcontrol-enable-kmem-accounting-for-all-cgroups-in-the-legacy-hierarchy.patch mm-vmscan-pass-root_mem_cgroup-instead-of-null-to-memcg-aware-shrinker.patch mm-memcontrol-zap-memcg_kmem_online-helper.patch radix-tree-account-radix_tree_node-to-memory-cgroup.patch mm-workingset-size-shadow-nodes-lru-basing-on-file-cache-size.patch mm-workingset-make-shadow-node-shrinker-memcg-aware.patch