Skip to contentSkip to conversation

proc01: handle EOPNOTSUPP if !hugepages_supported()

PATCH New Jan Stancek 2 participants 4 messages Jun 7, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 proc01: handle EOPNOTSUPP if !hugepages_supported()

This patch adds an entry to known issue list. These 2 proc files
may return EOPNOTSUPP if CONFIG_HUGETLB_PAGE=Y and hugepages_supported() is false:
/proc/sys/vm/nr_hugepages: errno=EOPNOTSUPP(95): Operation not supported /proc/sys/vm/nr_overcommit_hugepages: errno=EOPNOTSUPP(95): Operation not supported

from mm/hugetlb.c:
--------------------------------- 8< --------------------------------- static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
struct ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos)

{
        struct hstate *h = &default_hstate;
        unsigned long tmp = h->max_huge_pages;
        int ret;

        if (!hugepages_supported())
                return -EOPNOTSUPP;

--------------------------------- >8 ---------------------------------

I've noticed this issue on s390 only after this commit:
commit 7f9be77555bb2e52de84e9dddf7b4eb20cc6e171
Author: Dominik Dingel <[email protected]>
Date: Fri Jul 17 16:23:39 2015 -0700
s390/hugetlb: add hugepages_supported define

Also note, that kernel versions prior to 4.4 may fail with ENOTSUPP, which has been changed to EOPNOTSUPP by:
commit 86613628b3d367743f71b945c203774c522404f4
Author: Jan Stancek <[email protected]>
Date: Wed Mar 9 14:08:35 2016 -0800
mm/hugetlb: use EOPNOTSUPP in hugetlb sysctl handlers

Given that nobody complained running into this issue before, it's assumed that this is not common and therefore this patch adds only EOPNOTSUPP to list.

---
 testcases/kernel/fs/proc/proc01.c | 2 ++
 1 file changed, 2 insertions(+)
testcases/kernel/fs/proc/proc01.c +2 -0
index 2825b51dff95..409d6f9e32fe 100644
@@ -108,6 +108,8 @@ static const struct mapping known_issues[] = {
 	{"read", "/proc/fs/nfsd/.getfd", EINVAL},
 	{"read", "/proc/self/net/rpc/use-gss-proxy", EAGAIN},
 	{"read", "/proc/sys/net/ipv6/conf/*/stable_secret", EIO},
+	{"read", "/proc/sys/vm/nr_hugepages", EOPNOTSUPP},
+	{"read", "/proc/sys/vm/nr_overcommit_hugepages", EOPNOTSUPP},
 	{"", "", 0}
 };
 
Signature · 1 line
1.8.3.1
#1 lore raw

PATCH 1/1 proc01: handle EOPNOTSUPP if !hugepages_supported()

Hi!

Quoted 33 lines

This patch adds an entry to known issue list. These 2 proc files
may return EOPNOTSUPP if CONFIG_HUGETLB_PAGE=Y and hugepages_supported() is false:
/proc/sys/vm/nr_hugepages: errno=EOPNOTSUPP(95): Operation not supported /proc/sys/vm/nr_overcommit_hugepages: errno=EOPNOTSUPP(95): Operation not supported

from mm/hugetlb.c:
--------------------------------- 8< --------------------------------- static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
struct ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos)

{
        struct hstate *h = &default_hstate;
        unsigned long tmp = h->max_huge_pages;
        int ret;

        if (!hugepages_supported())
                return -EOPNOTSUPP;

--------------------------------- >8 ---------------------------------

I've noticed this issue on s390 only after this commit:
commit 7f9be77555bb2e52de84e9dddf7b4eb20cc6e171
Author: Dominik Dingel <[email protected]>
Date: Fri Jul 17 16:23:39 2015 -0700
s390/hugetlb: add hugepages_supported define

Also note, that kernel versions prior to 4.4 may fail with ENOTSUPP, which has been changed to EOPNOTSUPP by:
commit 86613628b3d367743f71b945c203774c522404f4
Author: Jan Stancek <[email protected]>
Date: Wed Mar 9 14:08:35 2016 -0800
mm/hugetlb: use EOPNOTSUPP in hugetlb sysctl handlers

Quoted 3 lines

Given that nobody complained running into this issue before, it's assumed that this is not common and therefore this patch adds only EOPNOTSUPP to list.

I've stumbled upon this failure as well, I was about to prod you to submit exactly this patch. Acked, and thanks :).

Signature · 2 lines
Cyril Hrubis
[email protected]
#2 lore raw

PATCH 1/1 proc01: handle EOPNOTSUPP if !hugepages_supported()

In reply to Jan Stancek

Hi!

Quoted 9 lines
---
 testcases/kernel/fs/proc/proc01.c | 2 ++
 1 file changed, 2 insertions(+)
testcases/kernel/fs/proc/proc01.c +0 -0
index 2825b51dff95..409d6f9e32fe 100644

testcases/kernel/fs/proc/proc01.c static const struct mapping known_issues[] = { · line 113

Quoted 6 lines
testcases/kernel/fs/proc/proc01.c +2 -0
@@ -108,6 +108,8 @@ static const struct mapping known_issues[] = {
 	{"read", "/proc/fs/nfsd/.getfd", EINVAL},
 	{"read", "/proc/self/net/rpc/use-gss-proxy", EAGAIN},
 	{"read", "/proc/sys/net/ipv6/conf/*/stable_secret", EIO},
+	{"read", "/proc/sys/vm/nr_hugepages", EOPNOTSUPP},
+	{"read", "/proc/sys/vm/nr_overcommit_hugepages", EOPNOTSUPP},
 	{"", "", 0}

Looking at my bugzilla it suggests:

+ {"read", "/proc/sys/vm/nr_hugepages_mempolicy", EOPNOTSUPP}

as well.

Signature · 2 lines
Cyril Hrubis
[email protected]
#3 lore raw

PATCH 1/1 proc01: handle EOPNOTSUPP if !hugepages_supported()

----- Original Message -----

Quoted 26 lines

From: "Cyril Hrubis" <[email protected]>
To: "Jan Stancek" <[email protected]>
Cc: [email protected]
Sent: Tuesday, 7 June, 2016 6:10:50 PM
Subject: Re: [LTP] [PATCH] proc01: handle EOPNOTSUPP if !hugepages_supported()

Hi!

Quoted 10 lines
---
 testcases/kernel/fs/proc/proc01.c | 2 ++
 1 file changed, 2 insertions(+)
testcases/kernel/fs/proc/proc01.c +0 -0
index 2825b51dff95..409d6f9e32fe 100644

testcases/kernel/fs/proc/proc01.c static const struct mapping known_issues[] = { · line 113

Quoted 6 lines
testcases/kernel/fs/proc/proc01.c +2 -0
@@ -108,6 +108,8 @@ static const struct mapping known_issues[] = {
 	{"read", "/proc/fs/nfsd/.getfd", EINVAL},
 	{"read", "/proc/self/net/rpc/use-gss-proxy", EAGAIN},
 	{"read", "/proc/sys/net/ipv6/conf/*/stable_secret", EIO},
+	{"read", "/proc/sys/vm/nr_hugepages", EOPNOTSUPP},
+	{"read", "/proc/sys/vm/nr_overcommit_hugepages", EOPNOTSUPP},
 	{"", "", 0}

Looking at my bugzilla it suggests:

Quoted 3 lines

+ {"read", "/proc/sys/vm/nr_hugepages_mempolicy", EOPNOTSUPP}

as well.

You're right. I didn't see this one on s390, because it's compiled with CONFIG_NUMA=n. I added nr_hugepages_mempolicy as well and pushed.

Regards,
Jan

Quoted 5 lines

--
Cyril Hrubis
[email protected]