Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp193886imm; Tue, 31 Jul 2018 16:40:33 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcSh+GOAXqtv4Qhf5qrsAHEL/bdp1ko/uLw2+zMc3M1rpsr39CM+F56zr9uLZqv1RYBcV92 X-Received: by 2002:a63:d244:: with SMTP id t4-v6mr22430960pgi.335.1533080433350; Tue, 31 Jul 2018 16:40:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533080433; cv=none; d=google.com; s=arc-20160816; b=fNguDT6KRhQWlqlge10B/jHfLX96+wxBpm6hOrnycTiBjP8ca0gWM/rSOAZBaF7nVZ aGYJFbnwPNMfBOsrGOGtbknbEVl6VViWyu9x4+SJhQgdhA5HK9Rrj6UVJ9BVLfZ0aBZk RAoAjbpV59cTuhluLi48yHnSNJMWXMRRrmi4w//I599VYZC+8cpwETqYFFqNmh3+H3qG aixESTgXW8XGALPS6nqYmeUoEBAEA06DtiJU3JQp12IJQdE+Uqs7ab7/QNbQn5pZg72/ denS9y5g7JeVqqFduDnFR3RjHsZtOzY0xF9XgzGT6YxR09vChA+8lr2FGrcgI+0q6jO0 YuqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :arc-authentication-results; bh=cXVr8cd0O9KFt0KWfqqcAAcQzr8CC5VUIlCD9CMuMf8=; b=g2MM7a6vjpWs73ed8GZdIY8EHxJVpEctnTTQVqNesIYhaLyS/Z07CeP0dDEDX+myLW oZlus8bsZwM8+n95nnpCGq768u7kgZopL5KyrBp3840gRDAFGUaQnvEM6Faf1VV15y0Z QEDv6EOuzBt7BQ+JbpPQ+/vGuqyr0hKfXXcOXcMegMSRNNj0WsRERlT93kppp7eU2M7u xvIkg8P7LA8PJYD/nJZTAYLnvjLvjD0fT+NwTAkLS+Cm5uhyGJqqA2WDaRW+oUqZ7JOA SC8+XDSUH/akySNlK4HH/noRrVGYRRGodBlSHbMGSWgqsoG+K/LgdnAbSSUzKxgsKzf4 1yVQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z13-v6si13970555pgc.409.2018.07.31.16.40.18; Tue, 31 Jul 2018 16:40:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732836AbeHABVw (ORCPT + 99 others); Tue, 31 Jul 2018 21:21:52 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:53146 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732813AbeHABVw (ORCPT ); Tue, 31 Jul 2018 21:21:52 -0400 Received: from localhost.localdomain (c-24-4-125-7.hsd1.ca.comcast.net [24.4.125.7]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 79D9829; Tue, 31 Jul 2018 23:39:10 +0000 (UTC) Date: Tue, 31 Jul 2018 16:39:08 -0700 From: Andrew Morton To: Johannes Weiner Cc: Vladimir Davydov , Michal Hocko , Kirill Tkhai , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] memcg: Remove memcg_cgroup::id from IDR on mem_cgroup_css_alloc() failure Message-Id: <20180731163908.603d7a27c6534341e1afa724@linux-foundation.org> In-Reply-To: <20180730153113.GB4567@cmpxchg.org> References: <6dbc33bb-f3d5-1a46-b454-13c6f5865fcd@virtuozzo.com> <20180413113855.GI17484@dhcp22.suse.cz> <8a81c801-35c8-767d-54b0-df9f1ca0abc0@virtuozzo.com> <20180413115454.GL17484@dhcp22.suse.cz> <20180413121433.GM17484@dhcp22.suse.cz> <20180413125101.GO17484@dhcp22.suse.cz> <20180726162512.6056b5d7c1d2a5fbff6ce214@linux-foundation.org> <20180727193134.GA10996@cmpxchg.org> <20180729192621.py4znecoinw5mqcp@esperanza> <20180730153113.GB4567@cmpxchg.org> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 30 Jul 2018 11:31:13 -0400 Johannes Weiner wrote: > Subject: [PATCH] mm: memcontrol: simplify memcg idr allocation and error > unwinding > > The memcg ID is allocated early in the multi-step memcg creation > process, which needs 2-step ID allocation and IDR publishing, as well > as two separate IDR cleanup/unwind sites on error. > > Defer the IDR allocation until the last second during onlining to > eliminate all this complexity. There is no requirement to have the ID > and IDR entry earlier than that. And the root reference to the ID is > put in the offline path, so this matches nicely. This patch isn't aware of Kirill's later "mm, memcg: assign memcg-aware shrinkers bitmap to memcg", which altered mem_cgroup_css_online(): @@ -4356,6 +4470,11 @@ static int mem_cgroup_css_online(struct { struct mem_cgroup *memcg = mem_cgroup_from_css(css); + if (memcg_alloc_shrinker_maps(memcg)) { + mem_cgroup_id_remove(memcg); + return -ENOMEM; + } + /* Online state pins memcg ID, memcg ID pins CSS */ atomic_set(&memcg->id.ref, 1); css_get(css);