[PATCH v5 1/8] linux: Add fsopen

Adhemerval Zanella adhemerval.zanella@linaro.org
Wed Jun 22 12:30:21 GMT 2022



> On 17 Jun 2022, at 18:28, Carlos O'Donell <carlos@redhat.com> wrote:
> 
> On 6/6/22 09:44, Adhemerval Zanella wrote:
>> It was added on Linux 5.2 (24dcb3d90a1f67fe08c68a004af37df059d74005)
>> to start the process of preparing to create a superblock that will
>> then be mountable, using an fd as a context handle.
> 
> Looking forward to v6. See comments below.
> 
>> ---
>> NEWS | 4 ++
>> sysdeps/unix/sysv/linux/Makefile | 8 +++
>> sysdeps/unix/sysv/linux/Versions | 1 +
>> sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/alpha/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/arc/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/csky/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/i386/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/ia64/libc.abilist | 1 +
>> .../sysv/linux/m68k/coldfire/libc.abilist | 1 +
>> .../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 +
>> .../sysv/linux/microblaze/be/libc.abilist | 1 +
>> .../sysv/linux/microblaze/le/libc.abilist | 1 +
>> .../sysv/linux/mips/mips32/fpu/libc.abilist | 1 +
>> .../sysv/linux/mips/mips32/nofpu/libc.abilist | 1 +
>> .../sysv/linux/mips/mips64/n32/libc.abilist | 1 +
>> .../sysv/linux/mips/mips64/n64/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/nios2/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 +
>> .../linux/powerpc/powerpc32/fpu/libc.abilist | 1 +
>> .../powerpc/powerpc32/nofpu/libc.abilist | 1 +
>> .../linux/powerpc/powerpc64/be/libc.abilist | 1 +
>> .../linux/powerpc/powerpc64/le/libc.abilist | 1 +
>> .../unix/sysv/linux/riscv/rv32/libc.abilist | 1 +
>> .../unix/sysv/linux/riscv/rv64/libc.abilist | 1 +
>> .../unix/sysv/linux/s390/s390-32/libc.abilist | 1 +
>> .../unix/sysv/linux/s390/s390-64/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 +
>> .../sysv/linux/sparc/sparc32/libc.abilist | 1 +
>> .../sysv/linux/sparc/sparc64/libc.abilist | 1 +
>> sysdeps/unix/sysv/linux/sys/mount.h | 8 +++
>> sysdeps/unix/sysv/linux/syscalls.list | 1 +
>> sysdeps/unix/sysv/linux/tst-mount-consts.py | 53 +++++++++++++++++++
>> .../unix/sysv/linux/x86_64/64/libc.abilist | 1 +
>> .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 +
>> 39 files changed, 108 insertions(+)
>> create mode 100755 sysdeps/unix/sysv/linux/tst-mount-consts.py
>> 
>> diff --git a/NEWS b/NEWS
>> index 6a213775e6..a94e8c0124 100644
>> --- a/NEWS
>> +++ b/NEWS
>> @@ -29,6 +29,10 @@ Major new features:
>> memory is carried out in the context of the caller, using the caller's
>> CPU affinity, and priority with CPU usage accounted to the caller.
>> 
>> +* On Linux, the fsopen has been added. It is a new mount API to allow
>> + more flexibility on mount operations, specially when used along
>> + namespaces.
> 
> Suggest:
> 
> * On Linux, the fsopen function has been added. It is part of the new Linux kernel
> mount APIs that allow applications to more flexibly configure and operate on
> filesystem mounts. The new mount APIs are specifically designed to work with
> namespaces.

Ack.

> 
>> +
>> Deprecated and removed features, and other changes affecting compatibility:
>> 
>> * Support for prelink will be removed in the next release; this includes
>> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
>> index 9e691fa103..7ffcf7ed83 100644
>> --- a/sysdeps/unix/sysv/linux/Makefile
>> +++ b/sysdeps/unix/sysv/linux/Makefile
>> @@ -256,6 +256,14 @@ $(objpfx)tst-pidfd-consts.out: ../sysdeps/unix/sysv/linux/tst-pidfd-consts.py
>> 	 < /dev/null > $@ 2>&1; $(evaluate-test)
>> $(objpfx)tst-pidfd-consts.out: $(sysdeps-linux-python-deps)
>> 
>> +tests-special += $(objpfx)tst-mount-consts.out
>> +$(objpfx)tst-mount-consts.out: ../sysdeps/unix/sysv/linux/tst-mount-consts.py
>> +	$(sysdeps-linux-python) \
>> +	 ../sysdeps/unix/sysv/linux/tst-mount-consts.py \
>> +	 $(sysdeps-linux-python-cc) \
>> +	 < /dev/null > $@ 2>&1; $(evaluate-test)
>> +$(objpfx)tst-mount-consts.out: $(sysdeps-linux-python-deps)
> 
> OK.
> 
>> +
>> tst-rseq-disable-ENV = GLIBC_TUNABLES=glibc.pthread.rseq=0
>> 
>> endif # $(subdir) == misc
>> diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
>> index 66a995d3dc..9ff750ac09 100644
>> --- a/sysdeps/unix/sysv/linux/Versions
>> +++ b/sysdeps/unix/sysv/linux/Versions
>> @@ -300,6 +300,7 @@ libc {
>> epoll_pwait2;
>> }
>> GLIBC_2.36 {
>> + fsopen;
> 
> OK.
> 
>> pidfd_open;
>> pidfd_getfd;
>> pidfd_send_signal;
>> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
>> index 027a1cf531..dedb69abda 100644
>> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
>> @@ -2616,6 +2616,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
>> index 703fcf5deb..67c7c43190 100644
>> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
>> @@ -2713,6 +2713,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
>> index 28c52dcbac..6b478b9461 100644
>> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
>> @@ -2377,6 +2377,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
>> index c3adade814..45af999b89 100644
>> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
>> @@ -496,6 +496,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
>> index 33a90a248e..5abdfbd677 100644
>> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
>> @@ -493,6 +493,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
>> index 23a00cfc0b..1b560da21f 100644
>> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
>> @@ -2652,6 +2652,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
>> index 93e1068208..09397be929 100644
>> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
>> @@ -2601,6 +2601,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
>> index 356b05cae4..a3b95efa36 100644
>> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
>> @@ -2785,6 +2785,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
>> index 58e51aae4b..840aa669e5 100644
>> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
>> @@ -2551,6 +2551,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
>> index ea4a19cbc2..8901429800 100644
>> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
>> @@ -497,6 +497,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
>> index 217717859c..5d3ccb254f 100644
>> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
>> @@ -2728,6 +2728,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
>> index 0e373d5c89..651d7e65f8 100644
>> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
>> @@ -2701,6 +2701,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
>> index 569d3e5556..c507fbd83b 100644
>> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
>> @@ -2698,6 +2698,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
>> index 7ccc7f93eb..eef92ef698 100644
>> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
>> @@ -2693,6 +2693,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
>> index d197f0bd5d..92634e2910 100644
>> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
>> @@ -2691,6 +2691,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
>> index 4a8e857e53..5a6a1b8bcd 100644
>> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
>> @@ -2699,6 +2699,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
>> index e0a170c030..0fdf5ff93b 100644
>> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
>> @@ -2602,6 +2602,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
>> index 6f809245c9..e219863360 100644
>> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
>> @@ -2740,6 +2740,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
>> index 1fc9e27c27..8fef5e2ab8 100644
>> --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
>> @@ -2123,6 +2123,7 @@ GLIBC_2.35 wprintf F
>> GLIBC_2.35 write F
>> GLIBC_2.35 writev F
>> GLIBC_2.35 wscanf F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
>> index 01ba1dd9ec..d8a5c77db1 100644
>> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
>> @@ -2755,6 +2755,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
>> index 263231a396..18cb35378d 100644
>> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
>> @@ -2788,6 +2788,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
>> index 2c3c3af8fb..e144bb4167 100644
>> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
>> @@ -2510,6 +2510,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
>> index 4138874b38..1f283236cd 100644
>> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
>> @@ -2812,6 +2812,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
>> index 5feae3245f..f76f47d017 100644
>> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
>> @@ -2379,6 +2379,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
>> index 3e6a4ae5ec..93517ae3d6 100644
>> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
>> @@ -2579,6 +2579,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
>> index 93c7b79b51..4d2c9ed035 100644
>> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
>> @@ -2753,6 +2753,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
>> index b663fabeba..71bb7af685 100644
>> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
>> @@ -2547,6 +2547,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
>> index abebf77944..a040860010 100644
>> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
>> @@ -2608,6 +2608,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
>> index afd8a42895..10b7fa3560 100644
>> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
>> @@ -2605,6 +2605,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
>> index 56feda817d..e859089b64 100644
>> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
>> @@ -2748,6 +2748,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
>> index 00cc5b24d1..4347e399d6 100644
>> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
>> @@ -2574,6 +2574,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h
>> index 174b5c7763..56da283d3f 100644
>> --- a/sysdeps/unix/sysv/linux/sys/mount.h
>> +++ b/sysdeps/unix/sysv/linux/sys/mount.h
>> @@ -134,6 +134,10 @@ enum
>> };
>> 
>> 
>> +/* fsopen flags. */
>> +#define FSOPEN_CLOEXEC 0x00000001
> 
> OK. Expecting FSOPEN_CLOEXEC and it is present. The flag does what we expect because something
> has to close the fd that is attached to the mount context. Verified FSOPEN_CLOEXEC is the only
> flag bit we current have for fsopen(). Value matches kernel.
> 
>> +
>> +
>> __BEGIN_DECLS
>> 
>> /* Mount a filesystem. */
>> @@ -147,6 +151,10 @@ extern int umount (const char *__special_file) __THROW;
>> /* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */
>> extern int umount2 (const char *__special_file, int __flags) __THROW;
>> 
>> +/* Open the filesystem referenced by FS_NAME so it can be configured for
>> + mouting. */
>> +extern int fsopen (const char *__fs_name, unsigned int __flags) __THROW;
> 
> OK const char *, and unsigned int, agrees with the kernel, and SYSCALL_DEFINE2 macro.
> 
>> +
>> __END_DECLS
>> 
>> #endif /* _SYS_MOUNT_H */
>> diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
>> index b12a0d56fa..a2919f433d 100644
>> --- a/sysdeps/unix/sysv/linux/syscalls.list
>> +++ b/sysdeps/unix/sysv/linux/syscalls.list
>> @@ -12,6 +12,7 @@ epoll_ctl	EXTRA	epoll_ctl	i:iiip	epoll_ctl
>> eventfd		EXTRA	eventfd2	i:ii	eventfd
>> execve		-	execve		i:spp	__execve	execve
>> flock		-	flock		i:ii	__flock		flock
>> +fsopen		EXTRA	fsopen		i:sU	fsopen
> 
> OK. Add wrapper. Returns int. Takes non-NULL string e.g. first arg to open. Unsigned long int [OK].
> 
>> get_kernel_syms	EXTRA	get_kernel_syms	i:p	__compat_get_kernel_syms	get_kernel_syms@GLIBC_2.0:GLIBC_2.23
>> getpid - getpid Ei: __getpid getpid
>> getegid		-	getegid		Ei:	__getegid	getegid
>> diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py
>> new file mode 100755
>> index 0000000000..162b01147d
>> --- /dev/null
>> +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py
>> @@ -0,0 +1,53 @@
>> +#!/usr/bin/python3
>> +# Test that glibc's sys/mount.h constants match the kernel's.
>> +# Copyright (C) 2022 Free Software Foundation, Inc.
>> +# This file is part of the GNU C Library.
>> +#
>> +# The GNU C Library is free software; you can redistribute it and/or
>> +# modify it under the terms of the GNU Lesser General Public
>> +# License as published by the Free Software Foundation; either
>> +# version 2.1 of the License, or (at your option) any later version.
>> +#
>> +# The GNU C Library is distributed in the hope that it will be useful,
>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> +# Lesser General Public License for more details.
>> +#
>> +# You should have received a copy of the GNU Lesser General Public
>> +# License along with the GNU C Library; if not, see
>> +# <https://www.gnu.org/licenses/>.
>> +
>> +import argparse
>> +import sys
>> +
>> +import glibcextract
>> +import glibcsyscalls
>> +
>> +
>> +def main():
>> + """The main entry point."""
>> + parser = argparse.ArgumentParser(
>> + description="Test that glibc's sys/mount.h constants "
>> + "match the kernel's.")
>> + parser.add_argument('--cc', metavar='CC',
>> + help='C compiler (including options) to use')
>> + args = parser.parse_args()
>> +
>> + linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
> 
> I think this needs a comment:
> 
> # Constants in glibc were updated to match Linux v5.16
> # When glibc constants are updated this value should be updated to
> # match the released kernel version from which the constants were taken.

Ack.

> 
>> + linux_version_glibc = (5, 16)
> 
> Then this allows you to drive the allow_extra_[12] boiler-plate checking below.
> 
>> + def check(cte, exclude=None):
>> + return glibcextract.compare_macro_consts(
>> + '#include <sys/mount.h>\n',
>> + '#include <asm/fcntl.h>\n'
>> + '#include <linux/mount.h>\n',
>> + args.cc,
>> + cte,
>> + exclude,
>> + linux_version_glibc > linux_version_headers,
>> + linux_version_headers > linux_version_glibc)
>> +
>> + status = check('FSOPEN_.*')
>> + sys.exit(status)
>> +
>> +if __name__ == '__main__':
>> + main()
>> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
>> index 4e729bdf56..65e5d2150d 100644
>> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
>> @@ -2525,6 +2525,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
>> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
>> index b5d7b9f1ed..4c6371b3c4 100644
>> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
>> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
>> @@ -2631,6 +2631,7 @@ GLIBC_2.35 __memcmpeq F
>> GLIBC_2.35 _dl_find_object F
>> GLIBC_2.35 epoll_pwait2 F
>> GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
>> +GLIBC_2.36 fsopen F
>> GLIBC_2.36 pidfd_getfd F
>> GLIBC_2.36 pidfd_open F
>> GLIBC_2.36 pidfd_send_signal F
> 
> 
> -- 
> Cheers,
> Carlos.



More information about the Libc-alpha mailing list