From mboxrd@z Thu Jan 1 00:00:00 1970 From: TSUKADA Koutaro Subject: [PATCH v2 5/7] hugetlb: add charge_surplus_hugepages attribute Date: Fri, 18 May 2018 13:37:37 +0900 Message-ID: <2e8b5907-36e1-094b-ec87-149e1f0b7f69@ascade.co.jp> References: Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Johannes Weiner , Michal Hocko , Vladimir Davydov , Jonathan Corbet , "Luis R. Rodriguez" , Kees Cook Cc: Andrew Morton , Roman Gushchin , David Rientjes , Mike Kravetz , "Aneesh Kumar K.V" , Naoya Horiguchi , Anshuman Khandual , Marc-Andre Lureau , Punit Agrawal , Dan Williams , Vlastimil Babka , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, tsukada@ascade.co.jp Add an entry for charge_surplus_hugepages to sysfs. Signed-off-by: TSUKADA Koutaro --- hugetlb.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 9a9549c..2f9bdbc 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2662,6 +2662,30 @@ static ssize_t surplus_hugepages_show(struct kobject *kobj, } HSTATE_ATTR_RO(surplus_hugepages); +static ssize_t charge_surplus_hugepages_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct hstate *h = kobj_to_hstate(kobj, NULL); + return sprintf(buf, "%d\n", h->charge_surplus_huge_pages); +} + +static ssize_t charge_surplus_hugepages_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t len) +{ + int err; + unsigned long input; + struct hstate *h = kobj_to_hstate(kobj, NULL); + + err = kstrtoul(buf, 10, &input); + if (err) + return err; + + h->charge_surplus_huge_pages = input ? true : false; + + return len; +} +HSTATE_ATTR(charge_surplus_hugepages); + static struct attribute *hstate_attrs[] = { &nr_hugepages_attr.attr, &nr_overcommit_hugepages_attr.attr, @@ -2671,6 +2695,7 @@ static ssize_t surplus_hugepages_show(struct kobject *kobj, #ifdef CONFIG_NUMA &nr_hugepages_mempolicy_attr.attr, #endif + &charge_surplus_hugepages_attr.attr, NULL, }; -- Tsukada