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=-23.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_IN_DEF_DKIM_WL 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 AF0FEC4338F for ; Tue, 10 Aug 2021 21:35:10 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 519A161076 for ; Tue, 10 Aug 2021 21:35:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 519A161076 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id D30D56B0072; Tue, 10 Aug 2021 17:35:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CE0B86B0073; Tue, 10 Aug 2021 17:35:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BD02B8D0001; Tue, 10 Aug 2021 17:35:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0195.hostedemail.com [216.40.44.195]) by kanga.kvack.org (Postfix) with ESMTP id A4A466B0072 for ; Tue, 10 Aug 2021 17:35:09 -0400 (EDT) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 51273824999B for ; Tue, 10 Aug 2021 21:35:09 +0000 (UTC) X-FDA: 78460476738.20.6B9EA6A Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) by imf13.hostedemail.com (Postfix) with ESMTP id ED0ED102063F for ; Tue, 10 Aug 2021 21:35:08 +0000 (UTC) Received: by mail-ot1-f42.google.com with SMTP id v10-20020a9d604a0000b02904fa9613b53dso813926otj.6 for ; Tue, 10 Aug 2021 14:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:in-reply-to:message-id:references :mime-version; bh=owlKubz0VCC0V3BG8kdaZ1xrau2d//hIlJnyfzapz+s=; b=AEKpi0uIg7pyzBo4tSSu7frvNA2UyvuApWtvuMkpMkS7yaSyheLEb8zHuLNCITXFla bd9U5QSV+e9gdMv6FTgDM7FASRqfmv5ikOgOz2NmRNNIuRZifJmnnbGTa13+WIvf/h7d R0WP/4+s7/b4QG66dz/cEsSjmT37QecCQMknjaaOMs3ysZbOEEg6vChNkEYJGXmHYY3U j2iPyWAxEZRBkjaO2/loDu/EPj4LRJSXQRZAEV2Vkjc2sESwf+Sxfg/DWPT97dz1PzgO rbLe8Pjrp48llIKFJYzrGYOvnvfiMtQ1UKHtDfokSRUFUpQbNCuHV/swmHhrgqmvtSdz sXZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:mime-version; bh=owlKubz0VCC0V3BG8kdaZ1xrau2d//hIlJnyfzapz+s=; b=L+fk6ztqd57wH90tUUDh7Mi8Hn5dd0fqzxPIjAWwBjRSjI0505huOc7Lw4kBslLtO7 hZFECYqMXblOj/5+Pdn7Bz3VE5AJKNl6lpTtvAG0J9ipFQIGH9sNUXqKndqbMK2Cpo7H IDRO1an++DgjyMyynpJ4/oTCrpTqE9XGhTAgTq9vrYV+nplsGK1hfJ26jT3k1UVJ6eXe cOqiIhipH+IdFam30UuWgnMTn1hyKQmGjqUiaftodjFX+41nxVe5r5joiAJKaNRPNaV+ pD4US90M+qGGJI7GgKsWW4hQlq2fEkcYjOED5FLTT4cFPYPxpQOZKGLSlpG+BhSNkVAH wxIA== X-Gm-Message-State: AOAM533I78J2wjJo+ie9H+K1N6mA503sgvmFwFUh3er3tRLlRwfngC+P cNymXulUMvoYHwnLabp2zJ7AgA== X-Google-Smtp-Source: ABdhPJwte0HMSxmLKnkcfT0K1AKrEXn4M9+ysfn8DCxnrjGunubgPXOIXjYQCMSgXF5nqAQ8B58iyw== X-Received: by 2002:a9d:5d14:: with SMTP id b20mr23125580oti.307.1628631308088; Tue, 10 Aug 2021 14:35:08 -0700 (PDT) Received: from ripple.attlocal.net (172-10-233-147.lightspeed.sntcca.sbcglobal.net. [172.10.233.147]) by smtp.gmail.com with ESMTPSA id 45sm295805otm.43.2021.08.10.14.35.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Aug 2021 14:35:07 -0700 (PDT) Date: Tue, 10 Aug 2021 14:35:05 -0700 (PDT) From: Hugh Dickins X-X-Sender: hugh@ripple.anvils To: Feng Tang cc: Michal Hocko , Andrew Morton , Hugh Dickins , linux-mm@kvack.org, David Rientjes , Dave Hansen , Ben Widawsky , linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, Andrea Arcangeli , Mel Gorman , Mike Kravetz , Randy Dunlap , Vlastimil Babka , Andi Kleen , Dan Williams , ying.huang@intel.com Subject: Re: [PATCH v7 3/5] mm/hugetlb: add support for mempolicy MPOL_PREFERRED_MANY In-Reply-To: <20210810085048.GA67328@shbuild999.sh.intel.com> Message-ID: <81f33a1-8ff-f2d4-63ff-de6c81d86f3@google.com> References: <1627970362-61305-1-git-send-email-feng.tang@intel.com> <1627970362-61305-4-git-send-email-feng.tang@intel.com> <20210809024430.GA46432@shbuild999.sh.intel.com> <20210809123747.GB46432@shbuild999.sh.intel.com> <20210810085048.GA67328@shbuild999.sh.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20161025 header.b=AEKpi0uI; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf13.hostedemail.com: domain of hughd@google.com designates 209.85.210.42 as permitted sender) smtp.mailfrom=hughd@google.com X-Stat-Signature: kgt3cftut84888a1tng4u89owgck8h93 X-Rspamd-Queue-Id: ED0ED102063F X-Rspamd-Server: rspam01 X-HE-Tag: 1628631308-370325 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, 10 Aug 2021, Feng Tang wrote: > On Mon, Aug 09, 2021 at 03:19:32PM +0200, Michal Hocko wrote: > [snip] > > > > Do you think you can provide same helpers for other policies as well? > > > > Maybe we can get rid of some other ifdefery as well. > > > > > > Sure. I can make separate patch(es) for that. > > > > > > And you mean helper like mpol_is_bind/default/local/preferred? > > > > > > I just run 'git-grep MPOL', and for places using "mode == MPOL_XXX", > > > mostly they are in mempolicy.[ch], the only another place is in > > > shmem.c, do we need to create all the helpers for it and the > > > potential future users? > > > > I would just go with those instances which need to ifdef for NUMA. > > Thanks! > > Yes, following is a patch to remove one CONFIG_NUMA check, though > an bolder idea to extend the patch by removing the CONFIG_TMPFS > check in the same line. > > Thanks, > Feng > > ---------8<--------------------------------- > > From 1a5858721ac8ce99c27c13d310bba2983dc73d97 Mon Sep 17 00:00:00 2001 > From: Feng Tang > Date: Tue, 10 Aug 2021 17:00:59 +0800 > Subject: [PATCH] mm: shmem: avoid open coded check for mempolicy's mode > > Add a mempolicy helper to do the check, which can also remove > a CONFIG_NUMA option check. > > Suggested-by: Michal Hocko > Signed-off-by: Feng Tang No thanks: this is not an improvement. The "#if defined(CONFIG_NUMA) && defined(CONFIG_TMPFS)" is there to eliminate dead code that would not be automatically eliminated by the optimizer: it's not there just to avoid MPOL_DEFAULT, and it's there to cover shmem_get_sbmpol() along with shmem_show_mpol(). I know we tend to avoid #ifdefs in .c files, and that's good; and I know you could find other code in mm/shmem.c which might also be #ifdef'ed to eliminate other dead code in other configs; but unless there's a new drive to purge our .c source of all #ifdefs, please just leave this as is. Thanks, Hugh > --- > include/linux/mempolicy.h | 14 ++++++++++++++ > mm/shmem.c | 8 ++++---- > 2 files changed, 18 insertions(+), 4 deletions(-) > > diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h > index 60d5e6c3340c..8fc518ad4f3c 100644 > --- a/include/linux/mempolicy.h > +++ b/include/linux/mempolicy.h > @@ -192,6 +192,10 @@ static inline bool mpol_is_preferred_many(struct mempolicy *pol) > return (pol->mode == MPOL_PREFERRED_MANY); > } > > +static inline bool mpol_is_default(struct mempolicy *pol) > +{ > + return (pol->mode == MPOL_DEFAULT); > +} > > #else > > @@ -287,6 +291,10 @@ static inline int mpol_parse_str(char *str, struct mempolicy **mpol) > } > #endif > > +static inline void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) > +{ > +} > + > static inline int mpol_misplaced(struct page *page, struct vm_area_struct *vma, > unsigned long address) > { > @@ -309,5 +317,11 @@ static inline bool mpol_is_preferred_many(struct mempolicy *pol) > return false; > } > > +static inline bool mpol_is_default(struct mempolicy *pol) > +{ > + return false; > +} > + > + > #endif /* CONFIG_NUMA */ > #endif > diff --git a/mm/shmem.c b/mm/shmem.c > index 96f05f6af8bb..26b195209ef7 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1437,12 +1437,12 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) > return 0; > } > > -#if defined(CONFIG_NUMA) && defined(CONFIG_TMPFS) > +#ifdef CONFIG_TMPFS > static void shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol) > { > char buffer[64]; > > - if (!mpol || mpol->mode == MPOL_DEFAULT) > + if (!mpol || mpol_is_default(mpol)) > return; /* show nothing */ > > mpol_to_str(buffer, sizeof(buffer), mpol); > @@ -1461,7 +1461,7 @@ static struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo) > } > return mpol; > } > -#else /* !CONFIG_NUMA || !CONFIG_TMPFS */ > +#else /* !CONFIG_TMPFS */ > static inline void shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol) > { > } > @@ -1469,7 +1469,7 @@ static inline struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo) > { > return NULL; > } > -#endif /* CONFIG_NUMA && CONFIG_TMPFS */ > +#endif /* CONFIG_TMPFS */ > #ifndef CONFIG_NUMA > #define vm_policy vm_private_data > #endif > -- > 2.14.1