From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED2DDC47404 for ; Fri, 4 Oct 2019 10:58:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CF162215EA for ; Fri, 4 Oct 2019 10:58:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729834AbfJDK6G (ORCPT ); Fri, 4 Oct 2019 06:58:06 -0400 Received: from mx2.suse.de ([195.135.220.15]:55138 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725730AbfJDK6F (ORCPT ); Fri, 4 Oct 2019 06:58:05 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id E917EABC6; Fri, 4 Oct 2019 10:58:02 +0000 (UTC) From: =?UTF-8?q?Michal=20Koutn=C3=BD?= To: cgroups@vger.kernel.org Cc: Tejun Heo , linux-kernel@vger.kernel.org, Li Zefan , Johannes Weiner Subject: [PATCH 1/5] cgroup: Update comments about task exit path Date: Fri, 4 Oct 2019 12:57:39 +0200 Message-Id: <20191004105743.363-2-mkoutny@suse.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191004105743.363-1-mkoutny@suse.com> References: <20191004105743.363-1-mkoutny@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We no longer take cgroup_mutex in cgroup_exit and the exiting tasks are not moved to init_css_set, reflect that in several comments to prevent confusion. Signed-off-by: Michal Koutný --- kernel/cgroup/cgroup.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 753afbca549f..1488bb732902 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -899,8 +899,7 @@ static void css_set_move_task(struct task_struct *task, /* * We are synchronized through cgroup_threadgroup_rwsem * against PF_EXITING setting such that we can't race - * against cgroup_exit() changing the css_set to - * init_css_set and dropping the old one. + * against cgroup_exit()/cgroup_free() dropping the css_set. */ WARN_ON_ONCE(task->flags & PF_EXITING); @@ -1430,9 +1429,8 @@ struct cgroup *task_cgroup_from_root(struct task_struct *task, struct cgroup_root *root) { /* - * No need to lock the task - since we hold cgroup_mutex the - * task can't change groups, so the only thing that can happen - * is that it exits and its css is set back to init_css_set. + * No need to lock the task - since we hold css_set_lock the + * task can't change groups. */ return cset_cgroup_from_root(task_css_set(task), root); } @@ -6020,7 +6018,7 @@ void cgroup_post_fork(struct task_struct *child) struct css_set *cset; spin_lock_irq(&css_set_lock); - cset = task_css_set(current); + cset = task_css_set(current); /* current is @child's parent */ if (list_empty(&child->cg_list)) { get_css_set(cset); cset->nr_tasks++; @@ -6063,20 +6061,8 @@ void cgroup_post_fork(struct task_struct *child) * cgroup_exit - detach cgroup from exiting task * @tsk: pointer to task_struct of exiting process * - * Description: Detach cgroup from @tsk and release it. - * - * Note that cgroups marked notify_on_release force every task in - * them to take the global cgroup_mutex mutex when exiting. - * This could impact scaling on very large systems. Be reluctant to - * use notify_on_release cgroups where very high task exit scaling - * is required on large systems. + * Description: Detach cgroup from @tsk. * - * We set the exiting tasks cgroup to the root cgroup (top_cgroup). We - * call cgroup_exit() while the task is still competent to handle - * notify_on_release(), then leave the task attached to the root cgroup in - * each hierarchy for the remainder of its exit. No need to bother with - * init_css_set refcnting. init_css_set never goes away and we can't race - * with migration path - PF_EXITING is visible to migration path. */ void cgroup_exit(struct task_struct *tsk) { @@ -6086,7 +6072,8 @@ void cgroup_exit(struct task_struct *tsk) /* * Unlink from @tsk from its css_set. As migration path can't race - * with us, we can check css_set and cg_list without synchronization. + * with us (thanks to cgroup_threadgroup_rwsem), we can check css_set + * and cg_list without synchronization. */ cset = task_css_set(tsk); @@ -6102,6 +6089,8 @@ void cgroup_exit(struct task_struct *tsk) spin_unlock_irq(&css_set_lock); } else { + /* Take reference to avoid freeing init_css_set in cgroup_free, + * see cgroup_fork(). */ get_css_set(cset); } -- 2.21.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Michal=20Koutn=C3=BD?= Subject: [PATCH 1/5] cgroup: Update comments about task exit path Date: Fri, 4 Oct 2019 12:57:39 +0200 Message-ID: <20191004105743.363-2-mkoutny@suse.com> References: <20191004105743.363-1-mkoutny@suse.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191004105743.363-1-mkoutny@suse.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="macroman" To: cgroups@vger.kernel.org Cc: Tejun Heo , linux-kernel@vger.kernel.org, Li Zefan , Johannes Weiner V2Ugbm8gbG9uZ2VyIHRha2UgY2dyb3VwX211dGV4IGluIGNncm91cF9leGl0IGFuZCB0aGUgZXhp dGluZyB0YXNrcyBhcmUKbm90IG1vdmVkIHRvIGluaXRfY3NzX3NldCwgcmVmbGVjdCB0aGF0IGlu IHNldmVyYWwgY29tbWVudHMgdG8gcHJldmVudApjb25mdXNpb24uCgpTaWduZWQtb2ZmLWJ5OiBN aWNoYWwgS291dG7DvSA8bWtvdXRueUBzdXNlLmNvbT4KLS0tCiBrZXJuZWwvY2dyb3VwL2Nncm91 cC5jIHwgMjkgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5 IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2tlcm5lbC9jZ3Jv dXAvY2dyb3VwLmMgYi9rZXJuZWwvY2dyb3VwL2Nncm91cC5jCmluZGV4IDc1M2FmYmNhNTQ5Zi4u MTQ4OGJiNzMyOTAyIDEwMDY0NAotLS0gYS9rZXJuZWwvY2dyb3VwL2Nncm91cC5jCisrKyBiL2tl cm5lbC9jZ3JvdXAvY2dyb3VwLmMKQEAgLTg5OSw4ICs4OTksNyBAQCBzdGF0aWMgdm9pZCBjc3Nf c2V0X21vdmVfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCiAJCS8qCiAJCSAqIFdlIGFy ZSBzeW5jaHJvbml6ZWQgdGhyb3VnaCBjZ3JvdXBfdGhyZWFkZ3JvdXBfcndzZW0KIAkJICogYWdh aW5zdCBQRl9FWElUSU5HIHNldHRpbmcgc3VjaCB0aGF0IHdlIGNhbid0IHJhY2UKLQkJICogYWdh aW5zdCBjZ3JvdXBfZXhpdCgpIGNoYW5naW5nIHRoZSBjc3Nfc2V0IHRvCi0JCSAqIGluaXRfY3Nz X3NldCBhbmQgZHJvcHBpbmcgdGhlIG9sZCBvbmUuCisJCSAqIGFnYWluc3QgY2dyb3VwX2V4aXQo KS9jZ3JvdXBfZnJlZSgpIGRyb3BwaW5nIHRoZSBjc3Nfc2V0LgogCQkgKi8KIAkJV0FSTl9PTl9P TkNFKHRhc2stPmZsYWdzICYgUEZfRVhJVElORyk7CiAKQEAgLTE0MzAsOSArMTQyOSw4IEBAIHN0 cnVjdCBjZ3JvdXAgKnRhc2tfY2dyb3VwX2Zyb21fcm9vdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2ssCiAJCQkJICAgICBzdHJ1Y3QgY2dyb3VwX3Jvb3QgKnJvb3QpCiB7CiAJLyoKLQkgKiBObyBu ZWVkIHRvIGxvY2sgdGhlIHRhc2sgLSBzaW5jZSB3ZSBob2xkIGNncm91cF9tdXRleCB0aGUKLQkg KiB0YXNrIGNhbid0IGNoYW5nZSBncm91cHMsIHNvIHRoZSBvbmx5IHRoaW5nIHRoYXQgY2FuIGhh cHBlbgotCSAqIGlzIHRoYXQgaXQgZXhpdHMgYW5kIGl0cyBjc3MgaXMgc2V0IGJhY2sgdG8gaW5p dF9jc3Nfc2V0LgorCSAqIE5vIG5lZWQgdG8gbG9jayB0aGUgdGFzayAtIHNpbmNlIHdlIGhvbGQg Y3NzX3NldF9sb2NrIHRoZQorCSAqIHRhc2sgY2FuJ3QgY2hhbmdlIGdyb3Vwcy4KIAkgKi8KIAly ZXR1cm4gY3NldF9jZ3JvdXBfZnJvbV9yb290KHRhc2tfY3NzX3NldCh0YXNrKSwgcm9vdCk7CiB9 CkBAIC02MDIwLDcgKzYwMTgsNyBAQCB2b2lkIGNncm91cF9wb3N0X2Zvcmsoc3RydWN0IHRhc2tf c3RydWN0ICpjaGlsZCkKIAkJc3RydWN0IGNzc19zZXQgKmNzZXQ7CiAKIAkJc3Bpbl9sb2NrX2ly cSgmY3NzX3NldF9sb2NrKTsKLQkJY3NldCA9IHRhc2tfY3NzX3NldChjdXJyZW50KTsKKwkJY3Nl dCA9IHRhc2tfY3NzX3NldChjdXJyZW50KTsgLyogY3VycmVudCBpcyBAY2hpbGQncyBwYXJlbnQg Ki8KIAkJaWYgKGxpc3RfZW1wdHkoJmNoaWxkLT5jZ19saXN0KSkgewogCQkJZ2V0X2Nzc19zZXQo Y3NldCk7CiAJCQljc2V0LT5ucl90YXNrcysrOwpAQCAtNjA2MywyMCArNjA2MSw4IEBAIHZvaWQg Y2dyb3VwX3Bvc3RfZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkKQogICogY2dyb3VwX2V4 aXQgLSBkZXRhY2ggY2dyb3VwIGZyb20gZXhpdGluZyB0YXNrCiAgKiBAdHNrOiBwb2ludGVyIHRv IHRhc2tfc3RydWN0IG9mIGV4aXRpbmcgcHJvY2VzcwogICoKLSAqIERlc2NyaXB0aW9uOiBEZXRh Y2ggY2dyb3VwIGZyb20gQHRzayBhbmQgcmVsZWFzZSBpdC4KLSAqCi0gKiBOb3RlIHRoYXQgY2dy b3VwcyBtYXJrZWQgbm90aWZ5X29uX3JlbGVhc2UgZm9yY2UgZXZlcnkgdGFzayBpbgotICogdGhl bSB0byB0YWtlIHRoZSBnbG9iYWwgY2dyb3VwX211dGV4IG11dGV4IHdoZW4gZXhpdGluZy4KLSAq IFRoaXMgY291bGQgaW1wYWN0IHNjYWxpbmcgb24gdmVyeSBsYXJnZSBzeXN0ZW1zLiAgQmUgcmVs dWN0YW50IHRvCi0gKiB1c2Ugbm90aWZ5X29uX3JlbGVhc2UgY2dyb3VwcyB3aGVyZSB2ZXJ5IGhp Z2ggdGFzayBleGl0IHNjYWxpbmcKLSAqIGlzIHJlcXVpcmVkIG9uIGxhcmdlIHN5c3RlbXMuCisg KiBEZXNjcmlwdGlvbjogRGV0YWNoIGNncm91cCBmcm9tIEB0c2suCiAgKgotICogV2Ugc2V0IHRo ZSBleGl0aW5nIHRhc2tzIGNncm91cCB0byB0aGUgcm9vdCBjZ3JvdXAgKHRvcF9jZ3JvdXApLiAg V2UKLSAqIGNhbGwgY2dyb3VwX2V4aXQoKSB3aGlsZSB0aGUgdGFzayBpcyBzdGlsbCBjb21wZXRl bnQgdG8gaGFuZGxlCi0gKiBub3RpZnlfb25fcmVsZWFzZSgpLCB0aGVuIGxlYXZlIHRoZSB0YXNr IGF0dGFjaGVkIHRvIHRoZSByb290IGNncm91cCBpbgotICogZWFjaCBoaWVyYXJjaHkgZm9yIHRo ZSByZW1haW5kZXIgb2YgaXRzIGV4aXQuICBObyBuZWVkIHRvIGJvdGhlciB3aXRoCi0gKiBpbml0 X2Nzc19zZXQgcmVmY250aW5nLiAgaW5pdF9jc3Nfc2V0IG5ldmVyIGdvZXMgYXdheSBhbmQgd2Ug Y2FuJ3QgcmFjZQotICogd2l0aCBtaWdyYXRpb24gcGF0aCAtIFBGX0VYSVRJTkcgaXMgdmlzaWJs ZSB0byBtaWdyYXRpb24gcGF0aC4KICAqLwogdm9pZCBjZ3JvdXBfZXhpdChzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRzaykKIHsKQEAgLTYwODYsNyArNjA3Miw4IEBAIHZvaWQgY2dyb3VwX2V4aXQoc3Ry dWN0IHRhc2tfc3RydWN0ICp0c2spCiAKIAkvKgogCSAqIFVubGluayBmcm9tIEB0c2sgZnJvbSBp dHMgY3NzX3NldC4gIEFzIG1pZ3JhdGlvbiBwYXRoIGNhbid0IHJhY2UKLQkgKiB3aXRoIHVzLCB3 ZSBjYW4gY2hlY2sgY3NzX3NldCBhbmQgY2dfbGlzdCB3aXRob3V0IHN5bmNocm9uaXphdGlvbi4K KwkgKiB3aXRoIHVzICh0aGFua3MgdG8gY2dyb3VwX3RocmVhZGdyb3VwX3J3c2VtKSwgd2UgY2Fu IGNoZWNrIGNzc19zZXQKKwkgKiBhbmQgY2dfbGlzdCB3aXRob3V0IHN5bmNocm9uaXphdGlvbi4K IAkgKi8KIAljc2V0ID0gdGFza19jc3Nfc2V0KHRzayk7CiAKQEAgLTYxMDIsNiArNjA4OSw4IEBA IHZvaWQgY2dyb3VwX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCiAKIAkJc3Bpbl91bmxv Y2tfaXJxKCZjc3Nfc2V0X2xvY2spOwogCX0gZWxzZSB7CisJCS8qIFRha2UgcmVmZXJlbmNlIHRv IGF2b2lkIGZyZWVpbmcgaW5pdF9jc3Nfc2V0IGluIGNncm91cF9mcmVlLAorCQkgKiBzZWUgY2dy b3VwX2ZvcmsoKS4gKi8KIAkJZ2V0X2Nzc19zZXQoY3NldCk7CiAJfQogCi0tIAoyLjIxLjAKCg==