proc01: handle EOPNOTSUPP if !hugepages_supported()
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
@@ -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
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 ifCONFIG_HUGETLB_PAGE=Yandhugepages_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 supportedfrom
mm/hugetlb.c:
--------------------------------- 8< --------------------------------- static int hugetlb_sysctl_handler_common(boolobey_mempolicy,
structctl_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:
commit7f9be77555bb2e52de84e9dddf7b4eb20cc6e171
Author: Dominik Dingel <[email protected]>
Date: Fri Jul 17 16:23:39 2015 -0700
s390/hugetlb: addhugepages_supporteddefineAlso note, that kernel versions prior to 4.4 may fail with ENOTSUPP, which has been changed to EOPNOTSUPP by:
commit86613628b3d367743f71b945c203774c522404f4
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]
PATCH 1/1 proc01: handle EOPNOTSUPP if !hugepages_supported()
In reply to Jan StancekHi!
Quoted 9 lines
--- testcases/kernel/fs/proc/proc01.c | 2 ++ 1 file changed, 2 insertions(+)testcases/kernel/fs/proc/proc01.c +0
-0
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]
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
-0testcases/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]