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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3E87CC3DA49 for ; Thu, 25 Jul 2024 22:34:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9EC706B0093; Thu, 25 Jul 2024 18:34:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 99C9D6B0095; Thu, 25 Jul 2024 18:34:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8640D6B0096; Thu, 25 Jul 2024 18:34:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 685446B0093 for ; Thu, 25 Jul 2024 18:34:06 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1AA271C0535 for ; Thu, 25 Jul 2024 22:34:06 +0000 (UTC) X-FDA: 82379729292.21.EC54073 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) by imf16.hostedemail.com (Postfix) with ESMTP id 48ADB18000B for ; Thu, 25 Jul 2024 22:34:04 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=vpTacfdk; spf=pass (imf16.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.45 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721946778; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cGgfznJEdI3Gx9UCrbE7PFhs00X7J6qVrZ1EvVju9Sw=; b=PgzWQ3e18ojQkwd0Vgo5wV9uUiPJ+PBUsxzXJftg6N5OQxZJUDC9QSOonoxUncoV5A4AO1 eioJhXNBoABScTACJ3eLT+MIO8aGLtMMILrg8CV6WCeSbzpXX6RokeqW7H8nQbZ5Bge/4B AeYpAgJ/0UFtS6xrxug1Vb6WX2aENDc= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=vpTacfdk; spf=pass (imf16.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.45 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721946778; a=rsa-sha256; cv=none; b=mhEtaJENzsMHs/KbqlNszyqUqH6nkr8hHlKQyIN1c72zAnhU3Q2zXKCDUaAGsR8LC6LPS/ ZAocT9MIeHH/N5fWxIDmnwMcaH3410bqCNn9mMrgozhViFN0Q/y28mkErn8WQKSYDTI8vg I9r/2vw91l16kUB8NtPFnmuTZeZBeYw= Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-52efc89dbedso867676e87.3 for ; Thu, 25 Jul 2024 15:34:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721946842; x=1722551642; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=cGgfznJEdI3Gx9UCrbE7PFhs00X7J6qVrZ1EvVju9Sw=; b=vpTacfdk+H6dQklEyXyREN76eqzkoErtqu3PvZK18Dc5gZ5aWMogjqh7YaYFf4tp7J 7e47zMx7+BxzJ8svI+lTbqsfbUqrFvha8t5a7e2LFpEgq4ZZSWHrfzAnR2lfPse0d4Tq va1c38yk2ud0wbzrkKCnZUwmvjZWBOJcOlsCvrDOakgvqJxoDwM+LAl6AAQ5BlTLMQO3 ROsltCD3BQBScQs1KVVwRUa4WrfUQutz49fGuZTpcz7X5wBJ14o6LyzDe3wi7OnnKoqM 0+OxrQ1tcvxzJOBy0IhelKS+J9nbUZOINVYHcaD1puis7mVwAN0zQuq0uub/6PdJhUyD wLfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721946842; x=1722551642; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cGgfznJEdI3Gx9UCrbE7PFhs00X7J6qVrZ1EvVju9Sw=; b=qDkRa97upPSSWqvXBcyhuKNJxbvh5HML88sJujEYf9yJLQAfnVqPfVjSjGpS6FUqLv Zl8av66mLQz9MymTT0DSl7kVIi6AehKibIOKnLYX8tBhiAR37/jpfqM1vM4fzYkKVoMy utVBFXDZ7tPl9nPf+XW/Cr8yrLZyqprrkR+1+WzkzhVCF/9VVV8TCaEjcjyUzKXWnNDy LvlsJfV0bbT7x8pCtqG8nS1+Z2w60Xb7lDc4+ZNGeZAojv9hSHViscp6cw2q98S0ePVP WoOC42KM1Wiq8ChUjcA/lAOENclZjMm2MTodC+tEPrDTvGlAYtArLf1Nwn1i0tsAQo9T Biag== X-Forwarded-Encrypted: i=1; AJvYcCV6oDeCPLSLnoGJGnNzuJ1Clgo8OrOg5h+SqUHvuCMWiS6jQmAfhzOjlFKaJ170pigwDPjVSKasd/bgWIGKD12tNsE= X-Gm-Message-State: AOJu0Yy5/LgihOvREF3O+4e/ifcpefa2lPh7TWEIxgcXS1KQ6QknqwI2 q2+AtawqYnw7IUeCMJnrQ7qAkGuWFvmsTLkYXA9+595Qj2TzSwByKPTwdn8Such4tNAN3rjXlTv 6Wybh5OTrUCxZKvhSJlVhDLhNJWb4lMsgagMY X-Google-Smtp-Source: AGHT+IEQq8tUhCv0tVkK5hp43CjLo7OghrupRMxYGedGT2oaKiTkLW8JJ09UHgIwz7Z5iBN1NgnX/NdQ+1dzTs757VU= X-Received: by 2002:ac2:4f0f:0:b0:52f:154:661b with SMTP id 2adb3069b0e04-52fd6087755mr2867109e87.11.1721946841759; Thu, 25 Jul 2024 15:34:01 -0700 (PDT) MIME-Version: 1.0 References: <20240724190214.1108049-1-kinseyho@google.com> <20240724190214.1108049-2-kinseyho@google.com> <20240725204346.GA1702603@cmpxchg.org> In-Reply-To: <20240725204346.GA1702603@cmpxchg.org> From: Yosry Ahmed Date: Thu, 25 Jul 2024 15:33:23 -0700 Message-ID: Subject: Re: [PATCH mm-unstable v1 1/4] mm: don't hold css->refcnt during traversal To: Johannes Weiner Cc: Kinsey Ho , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Roman Gushchin Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 48ADB18000B X-Stat-Signature: qj7sdsittcyipgspz9dg94rnbckpbecd X-Rspam-User: X-HE-Tag: 1721946844-150418 X-HE-Meta: U2FsdGVkX19avYwyWSGnOrBjv8PviW22GS6wc0fZTRm9sL8jiJ/X2DCIqWMbFgmwLLxZ+dI3yMPzRrU1/bI6BvSijfIccQYqL44TaJJe9w9LIPPJnSXMN9cUUK52jw+SlNokWmJ8pmD1QP0l6cnxQgLWRFuIxWWku1Lx1kuKqM8MiznadtoUmd7An5yewBOOcfaiZwQIJYONDQuOHnt5aI09v4PKyO476R+e6u5j71lnSV6D3bSc3qaPl+/N8IdGXXGixmzcfzkVWO9E7U+EUFoQnhbM8RkA/eSAabETGQjqXmby/pXdugKoQGWG5T+sjXwfDFW0xGdjGOZ3qgVabsZimWjR+r4plpVMpwMBOvVkmOhwFJDB54Kqptq7zth/so829SUDkuLi1VQcxwfS0ccdo0wy1ndjDZvhwieibW/ppx0AxudWkzZ6oEjY58VVgHkglzskqa5qBxo/LwUn0vNJM95DCOtEi9VT9cLsJKme+hebMyw60+40el89R4R75pphXcnuQzFuszWajLnNQWwZOWZADLvsIHbVq9hQPI7OOWxthgwu/81FgK8vNEZaj8XhmAZssBQ7/14KjziqKGQvATTfX5b9qsfWM6a3aNCjuxlk6yQfzo73FE5Wn46xSTBFzE9CHPStQEboMv5rI8q9Zrjm4mdgoPVdiCu3yH+//dF+dYqQnHuo42dX9vmEODcg93U9v+60GLck9TMBo8E8y9oXvsbsbp4Q4h0XEbaSdLDjyf2cMWzEJIuNXdpZrxPkFJD6r2ygABAq7H7VOIjfndYnUqxI2f/6kerppAldzQhKpaYMCOm7qYpFEqm1QuD/4q+HEu31DAxiA5zduLd+6RqUDaIofzlGDrkdlqHVmssIE9nMfwfYWmOxC8gPkGThJ+VBfX/3rx9kSDiauDPBeO4MdCOPkhTCZqqicxW5G0vSIr3TGJt6jJrRFm1xp7CDG8xvAZ0CHNNTMTL RcOK0F2L RlMpkk11uN/xfkZB26ORdegUDhyiGQVOjUgpRPrS2WfqzN0Oye9u8b2B5wLWHf599fmjghqegdF5+exIwOu1gK0AIdyGf5RIsX3yNh633pKjiZuf7I241TETIVPcezFsNGb+jDHRU65+6qXF8gJ53uwbvzHSHrE3WCS61bFEhdACQZg63da6kXlML+p3sCmrKSV/VCXpmCHbOL0im63WnB9qMzqZ79lBJm76A X-Bogosity: Ham, tests=bogofilter, spamicity=0.013195, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Jul 25, 2024 at 1:43=E2=80=AFPM Johannes Weiner wrote: > > On Wed, Jul 24, 2024 at 07:02:11PM +0000, Kinsey Ho wrote: > > To obtain the pointer to the saved memcg position, mem_cgroup_iter() > > currently holds css->refcnt during memcg traversal only to put > > css->refcnt at the end of the routine. This isn't necessary as an > > rcu_read_lock is already held throughout the function. > > > > Remove css->refcnt usage during traversal by leveraging RCU. > > Eh, I don't know about this. > > RCU ensures that the css memory isn't freed. > > The tryget ensures that the css is still alive and valid. > > In this case, it just so happens that the sibling linkage is also rcu > protected. But accessing random css members when the refcount is 0 is > kind of sketchy. On the other hand, the refcount is guaranteed to be > valid, and rcu + tryget is a common pattern. To be fair, the documentation of css_next_descendant_pre() mentions that the requirements are: - Either cgroup_mutex or RCU lock is held. - Both @pos and @root are accessible. - @pos is a descendant of @root. This reads to me like it is intentional that RCU protection is enough for @pos and @root, and that the sibling linkage is RCU protected by design. Perhaps we could clarify this further (whether at css_next_descendant_pre(), or above the definition of the linkage members). > > What does this buy us? The tryget is cheap. mem_cgroup_iter() is not an easy function to follow, so I personally appreciate the simplicity gains tbh.