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=-14.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_IN_DEF_DKIM_WL autolearn=no 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 69901C43461 for ; Thu, 17 Sep 2020 00:58:42 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C875E206C9 for ; Thu, 17 Sep 2020 00:58:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="KuTE6vzx" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C875E206C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 1A4DC90000A; Wed, 16 Sep 2020 20:58:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12E446B007D; Wed, 16 Sep 2020 20:58:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 01D6E90000A; Wed, 16 Sep 2020 20:58:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0054.hostedemail.com [216.40.44.54]) by kanga.kvack.org (Postfix) with ESMTP id DA5856B0071 for ; Wed, 16 Sep 2020 20:58:40 -0400 (EDT) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 9DE9C181AEF23 for ; Thu, 17 Sep 2020 00:58:40 +0000 (UTC) X-FDA: 77270743200.06.mine48_340c0092711e Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin06.hostedemail.com (Postfix) with ESMTP id 6F3A7100BC574 for ; Thu, 17 Sep 2020 00:58:40 +0000 (UTC) X-HE-Tag: mine48_340c0092711e X-Filterd-Recvd-Size: 4799 Received: from mail-lf1-f65.google.com (mail-lf1-f65.google.com [209.85.167.65]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Thu, 17 Sep 2020 00:58:39 +0000 (UTC) Received: by mail-lf1-f65.google.com with SMTP id b22so227598lfs.13 for ; Wed, 16 Sep 2020 17:58:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=THgsmZel/sKOebF10Auhnk+taxqXdrSC0+xZqau7VF4=; b=KuTE6vzx0dc9gxBPYVDqvGihkQy86qBNSpF9iWH3bpHZQBO/8ZNC4wFTesS9P/sVtT mpnuTZd3FYkvfJxE6oXTj2lH4EXNiqq4x/VC+x0ltW5fmn3UXX11HEFyOkvvTXNN2ICe nqkl+wblbZuENmgZawiYU8QA9Bl0UQvR0RpivQf9lQYpOlbC7nQ7YwYinVAssJYSdlMj /wgBMatjl/W7O4PQlw5t+oAVTaoPdBR8y/KetjX05bcfQG89wFb+sUqIeq7J5b8AxpDu pClEHJnOwkl/IiIc9a09QB1ftyJ67CpelUwYk8vilo+yI0FpJBhNBQtMdTQQGdSAzdt1 0bbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=THgsmZel/sKOebF10Auhnk+taxqXdrSC0+xZqau7VF4=; b=JzMNp/rBrPhCskoO55rZz+TlMI7x0e41lb9PkTr+WTclzrP9z1qU3nl6LE2xzjQJAg bbSXyZTSHQeNGBMRCMemYESJC0Ex4IcMcO/pBF75QHTbCCE8wrkivC2gVUTWZAPA/8gD YWyemj156ChNv/dpl+LeoHO/sgo2Pg55A13L6aK1dTdlI/B7ALvMHF4y8Jl0cCLQOZC6 hAi0rC2yJFe6Zyhw5b2cBSLT5pnu8u1YkKTkKcRmOU/CwB5dmRF00o8BWyoQ9CoWKwHR 3DZyvHFQZzthMvOToSUl8G1ZG2eoxZopd5zwXACj/g3vlgpZhJjWdLv+yPfHp8KZhgu7 hWog== X-Gm-Message-State: AOAM5330KN+w5CwqMjQdxdT7kx6RYBtfK2mn/LEHloHAfIYRuv8D5bPM cyBhZmJ4LrjS9MzjXWadyfO0p7oic0C1lOIrLy7MIA== X-Google-Smtp-Source: ABdhPJy9ZgWR2JEMmVN5ksKa/DjG5EnajS2k2G+HkTTMu4MwAXO/ACdKOGMmqq1DGZ4EEtelKVbgznT1b8Pa3/Yoais= X-Received: by 2002:a19:604e:: with SMTP id p14mr8024244lfk.385.1600304318184; Wed, 16 Sep 2020 17:58:38 -0700 (PDT) MIME-Version: 1.0 References: <20200910202659.1378404-1-guro@fb.com> <20200910202659.1378404-3-guro@fb.com> In-Reply-To: <20200910202659.1378404-3-guro@fb.com> From: Shakeel Butt Date: Wed, 16 Sep 2020 17:58:27 -0700 Message-ID: Subject: Re: [PATCH rfc 2/5] mm: memcontrol: use helpers to access page's memcg data To: Roman Gushchin Cc: Andrew Morton , Linux MM , Johannes Weiner , Michal Hocko , Kernel Team , LKML Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 6F3A7100BC574 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000045, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Sep 10, 2020 at 1:27 PM Roman Gushchin wrote: > > Currently there are many open-coded reads and writes of the page->mem_cgroup > pointer, as well as a couple of read helpers, which are barely used. > > It creates an obstacle on a way to reuse some bits of the pointer > for storing additional bits of information. In fact, we already do > this for slab pages, where the last bit indicates that a pointer has > an attached vector of objcg pointers instead of a regular memcg > pointer. > > This commits introduces 4 new helper functions and converts all > raw accesses to page->mem_cgroup to calls of these helpers: > struct mem_cgroup *page_mem_cgroup(struct page *page); > struct mem_cgroup *page_mem_cgroup_check(struct page *page); > void set_page_mem_cgroup(struct page *page, struct mem_cgroup *memcg); > void clear_page_mem_cgroup(struct page *page); > > page_mem_cgroup_check() is intended to be used in cases when the page > can be a slab page and have a memcg pointer pointing at objcg vector. > It does check the lowest bit, and if set, returns NULL. > page_mem_cgroup() contains a VM_BUG_ON_PAGE() check for the page not > being a slab page. So do set_page_mem_cgroup() and clear_page_mem_cgroup(). > > To make sure nobody uses a direct access, struct page's > mem_cgroup/obj_cgroups is converted to unsigned long memcg_data. > Only new helpers and a couple of slab-accounting related functions > access this field directly. > > page_memcg() and page_memcg_rcu() helpers defined in mm.h are removed. > New page_mem_cgroup() is a direct analog of page_memcg(), while > page_memcg_rcu() has a single call site in a small rcu-read-lock > section, so it's just not worth it to have a separate helper. So > it's replaced with page_mem_cgroup() too. > > Signed-off-by: Roman Gushchin You need to update a couple of comments in kernel/fork.c, mm/slab.h, mm/workingset.c, fs/buffer.c, fs/iomap/buffered-io.c. Reviewed-by: Shakeel Butt