linux: Make tst-mount-consts unsupported for kernels headers older than 5.0

Message ID 20220809172215.593850-1-adhemerval.zanella@linaro.org
State Superseded
Headers
Series linux: Make tst-mount-consts unsupported for kernels headers older than 5.0 |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit fail Patch caused testsuite regressions

Commit Message

Adhemerval Zanella Aug. 9, 2022, 5:22 p.m. UTC
  The linux/mount.h is only provided by Linux 5.0.

Checked on x86_64-linux-gnu.
---
 sysdeps/unix/sysv/linux/tst-mount-consts.py | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Florian Weimer Aug. 10, 2022, 9:18 a.m. UTC | #1
* Adhemerval Zanella:

> The linux/mount.h is only provided by Linux 5.0.
>
> Checked on x86_64-linux-gnu.
> ---
>  sysdeps/unix/sysv/linux/tst-mount-consts.py | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py
> index 4fb356310b..0f5b982430 100755
> --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py
> +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py
> @@ -34,6 +34,9 @@ def main():
>      args = parser.parse_args()
>  
>      linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
> +    # Linux started to provide mount.h with 5.0.
> +    if linux_version_headers < (5, 0):
> +        sys.exit (77)
>      # Constants in glibc were updated to match Linux v5.19.  When glibc
>      # constants are updated this value should be updated to match the
>      # released kernel version from which the constants were taken.

Should this use compile_c_snippet from the other patch?

Thanks,
Florian
  
Adhemerval Zanella Aug. 10, 2022, 2:52 p.m. UTC | #2
On 10/08/22 06:18, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>> The linux/mount.h is only provided by Linux 5.0.
>>
>> Checked on x86_64-linux-gnu.
>> ---
>>  sysdeps/unix/sysv/linux/tst-mount-consts.py | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py
>> index 4fb356310b..0f5b982430 100755
>> --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py
>> +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py
>> @@ -34,6 +34,9 @@ def main():
>>      args = parser.parse_args()
>>  
>>      linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
>> +    # Linux started to provide mount.h with 5.0.
>> +    if linux_version_headers < (5, 0):
>> +        sys.exit (77)
>>      # Constants in glibc were updated to match Linux v5.19.  When glibc
>>      # constants are updated this value should be updated to match the
>>      # released kernel version from which the constants were taken.
> 
> Should this use compile_c_snippet from the other patch?

It is strategy already used on tst-pidfd-consts.py.  Not sure if syscalls 
backport to old releases is that common (it seems that we recently had to
handle it for memfd_secret), but we do not usually take this in consideration
on the __ASSUME macros and optimizations.
  
Florian Weimer Aug. 10, 2022, 3:01 p.m. UTC | #3
* Adhemerval Zanella Netto:

> On 10/08/22 06:18, Florian Weimer wrote:
>> * Adhemerval Zanella:
>> 
>>> The linux/mount.h is only provided by Linux 5.0.
>>>
>>> Checked on x86_64-linux-gnu.
>>> ---
>>>  sysdeps/unix/sysv/linux/tst-mount-consts.py | 3 +++
>>>  1 file changed, 3 insertions(+)
>>>
>>> diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py
>>> index 4fb356310b..0f5b982430 100755
>>> --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py
>>> +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py
>>> @@ -34,6 +34,9 @@ def main():
>>>      args = parser.parse_args()
>>>  
>>>      linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
>>> +    # Linux started to provide mount.h with 5.0.
>>> +    if linux_version_headers < (5, 0):
>>> +        sys.exit (77)
>>>      # Constants in glibc were updated to match Linux v5.19.  When glibc
>>>      # constants are updated this value should be updated to match the
>>>      # released kernel version from which the constants were taken.
>> 
>> Should this use compile_c_snippet from the other patch?
>
> It is strategy already used on tst-pidfd-consts.py.  Not sure if syscalls 
> backport to old releases is that common (it seems that we recently had to
> handle it for memfd_secret), but we do not usually take this in consideration
> on the __ASSUME macros and optimizations.

I think <linux/mount.h> has been backported fairly widely because it's
needed by userspace file servers.

On older kernels, you could perhaps use <linux/fs.h> instead.

Thanks,
Florian
  

Patch

diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py
index 4fb356310b..0f5b982430 100755
--- a/sysdeps/unix/sysv/linux/tst-mount-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py
@@ -34,6 +34,9 @@  def main():
     args = parser.parse_args()
 
     linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
+    # Linux started to provide mount.h with 5.0.
+    if linux_version_headers < (5, 0):
+        sys.exit (77)
     # Constants in glibc were updated to match Linux v5.19.  When glibc
     # constants are updated this value should be updated to match the
     # released kernel version from which the constants were taken.