From patchwork Mon Jun 6 13:44:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54826 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6E21D384B077 for ; Mon, 6 Jun 2022 13:45:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6E21D384B077 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523141; bh=GX64ACikjhNVQjBrSjTrx8fQrnsBNM5HRJxkNLH8ucw=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Sf0XKD551hmsucq6kWJmhPEB0/qpZo8lxKssFMnwq166Krg7tl5FcwJDYsKUslRFz M3FyHWvuimdunxpnmbkRewh8404XHqzLjxqXrji65DOZYgmZpz0xpHsqd2SDrP6t/T 9h+qJB64PxKtdSJSZCwOVSdvAff40tKraWZ/Z6mY= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oi1-x22a.google.com (mail-oi1-x22a.google.com [IPv6:2607:f8b0:4864:20::22a]) by sourceware.org (Postfix) with ESMTPS id 240F9384B077 for ; Mon, 6 Jun 2022 13:44:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 240F9384B077 Received: by mail-oi1-x22a.google.com with SMTP id q184so2796804oia.1 for ; Mon, 06 Jun 2022 06:44:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GX64ACikjhNVQjBrSjTrx8fQrnsBNM5HRJxkNLH8ucw=; b=vIrvYA5WEy/kUCcdvicFeXonrXE76O2xKx4ny9rvkoDVUXPxjEKveg8BbMtPnIX5GE gPSZQesyiYnO1zoUauGDkx9R0HyBEdEpMwhM+RRXWpnxxdaLXoiuUWugPd/Ja88Pob2X 8Gi3KR9wxH3fG6vh/9VTGTJvwB+TTyhZc4hYdTP3Ep0OR+naR3Ewo/Yk4dLpy9Z+vEIa bqzXBJjnkabUX85pWgzlCqxu/fPmTg+KV2dCyqFtMzRdTSfQUbvsdppNAcAW3lnaNSwO nn225E3glR8/4JhlZ50tIPZ9nF/ujerLRaU3/WNhyn5hI+ZXshoRgvsssHP2RQetgU17 pXtw== X-Gm-Message-State: AOAM530BumihrTHk9DMmSwWpwK+kuRmstobJ4K8HlihyObVWnCsRuYZA +z+xlmUcJyoLUmkqON7J6t2DZTMQheWYhQ== X-Google-Smtp-Source: ABdhPJyBz8mOcckHCeKJ1ORMIkQchmyKJqKFK/00BC57Sl8BCBY1AEFu1eXTTsX/h+68X7emUii7nQ== X-Received: by 2002:a05:6808:3198:b0:32b:a54:1238 with SMTP id cd24-20020a056808319800b0032b0a541238mr29120192oib.16.1654523077932; Mon, 06 Jun 2022 06:44:37 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:37 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 1/8] linux: Add fsopen Date: Mon, 6 Jun 2022 10:44:25 -0300 Message-Id: <20220606134432.1944534-2-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" 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. --- 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. + 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) + 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; 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 + + __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; + __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 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 +# . + +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) + linux_version_glibc = (5, 16) + def check(cte, exclude=None): + return glibcextract.compare_macro_consts( + '#include \n', + '#include \n' + '#include \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 From patchwork Mon Jun 6 13:44:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54827 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9BF40383569F for ; Mon, 6 Jun 2022 13:46:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9BF40383569F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523188; bh=qDMRtyC3iZk0XBiYbezZ5bef9XzQ4fk1ywJKnx9TPOo=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=SU9L6p1wdWOafDMNuXenfRB8fayel4fUO0Mtcn8htR9N++lOE43Gwwx/+I2+y2rTd cVih6NatlL9glAXg5ZugzkBX1b3heKD6VUPx/bFWLjTfd/2HovggkMWoCysguCquSk 6FKWPGFDyYYQon3HYkH8DKw6xo6xobklIIGq/zr4= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oi1-x22f.google.com (mail-oi1-x22f.google.com [IPv6:2607:f8b0:4864:20::22f]) by sourceware.org (Postfix) with ESMTPS id 96214383A333 for ; Mon, 6 Jun 2022 13:44:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 96214383A333 Received: by mail-oi1-x22f.google.com with SMTP id s8so14457185oib.6 for ; Mon, 06 Jun 2022 06:44:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qDMRtyC3iZk0XBiYbezZ5bef9XzQ4fk1ywJKnx9TPOo=; b=pEQy6ZjHwA3Y+kG7RcR4pBWX8pAMEHjC9sIKukq2jnAS+L+OQesfmoUyKucyU1hUSI 7jO8StNnw1okitSvECNuWUkgDcHkdsqPRLQnyS6zb68z8Lnni3zk3fuK+PaS20RiEX0f fmwO2Ogqcu/oKzvJowrMXBlBcSBZ6vT0eubNmBWlATiNF/7zh5IQGGMY6Ix6GcdZrhoW qdH2loOQBoUMEAE45N3CXsBRpyOlDx/ALW3eMMvxGTTpXejdK/hI9ypg4E+Oqm4VnJxx Evngq+e1/AQHp5SCyE13cGlpZfai/N1bV4SYCbCurOWz59VDJMedAaMKNb+T3JUng464 uojw== X-Gm-Message-State: AOAM5310vKCas22GRuFdGrUVAHJ1tisGt7VmbZryy6jzJUxJcfuS3Tr9 6MkAYDV5Sg5myUWJ8VNIjaM2JoyifgZJZA== X-Google-Smtp-Source: ABdhPJzW4r2R4M6rFw3is7DaHlfoKf+j88JRYKVhwQMaRLRe10hM4c0WYnPfiIKaIhExjrjCfdXgwA== X-Received: by 2002:a05:6808:bc3:b0:32e:6fdd:930e with SMTP id o3-20020a0568080bc300b0032e6fdd930emr6805740oik.239.1654523079565; Mon, 06 Jun 2022 06:44:39 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:39 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 2/8] linux: Add fsmount Date: Mon, 6 Jun 2022 10:44:26 -0300 Message-Id: <20220606134432.1944534-3-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" It was added on 5.2 (93766fbd2696c2c4453dd8e1070977e9cd4e6b6d) to provide a way by which a filesystem opened with fsopen and configured by a series of fsconfig calls can have a detached mount object created for it. Tested-by: Carlos O'Donell --- NEWS | 4 ++-- 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 | 21 +++++++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 + sysdeps/unix/sysv/linux/tst-mount-consts.py | 6 +++++- .../unix/sysv/linux/x86_64/64/libc.abilist | 1 + .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 + 38 files changed, 63 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index a94e8c0124..51ca68f1da 100644 --- a/NEWS +++ b/NEWS @@ -29,8 +29,8 @@ 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 +* On Linux, the fsopen and fsmound have been added. It is a new mount API + to allow more flexibility on mount operations, specially when used along namespaces. Deprecated and removed features, and other changes affecting compatibility: diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 9ff750ac09..1d5b15aec4 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -300,6 +300,7 @@ libc { epoll_pwait2; } GLIBC_2.36 { + fsmount; fsopen; pidfd_open; pidfd_getfd; diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index dedb69abda..bcad128067 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 67c7c43190..1d88271a25 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index 6b478b9461..c4cc3c17f0 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index 45af999b89..cfec9daf7a 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 5abdfbd677..b77416d32f 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 1b560da21f..76261943fb 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 09397be929..29352b69ac 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index a3b95efa36..9c465ec784 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index 840aa669e5..ad1268e61f 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index 8901429800..c63c140612 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 5d3ccb254f..937ac25d40 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 651d7e65f8..d144df6ace 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index c507fbd83b..87ff6f261f 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index eef92ef698..b0d2b88f14 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 92634e2910..2ed23ce297 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 5a6a1b8bcd..0048a23416 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 0fdf5ff93b..4b10b6bec2 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index e219863360..8f905a8def 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index 8fef5e2ab8..60c2cdb6e2 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index d8a5c77db1..ac5453d9c1 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 18cb35378d..772b6d2587 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index e144bb4167..bcf1ed9a1c 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index 1f283236cd..cf4452775f 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index f76f47d017..48aaada19d 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 93517ae3d6..e08ddc8627 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 4d2c9ed035..c315714ed8 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index 71bb7af685..9d83b3cf7d 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index a040860010..8e10946936 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 10b7fa3560..6b4d8047c9 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index e859089b64..d222061590 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 4347e399d6..a8eb190e46 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h index 56da283d3f..9fa39c7d09 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -137,6 +137,22 @@ enum /* fsopen flags. */ #define FSOPEN_CLOEXEC 0x00000001 +/* fsmount flags. */ +#define FSMOUNT_CLOEXEC 0x00000001 + +/* mount attributes used on fsmount. */ +#define MOUNT_ATTR_RDONLY 0x00000001 /* Mount read-only. */ +#define MOUNT_ATTR_NOSUID 0x00000002 /* Ignore suid and sgid bits. */ +#define MOUNT_ATTR_NODEV 0x00000004 /* Disallow access to device special files. */ +#define MOUNT_ATTR_NOEXEC 0x00000008 /* Disallow program execution. */ +#define MOUNT_ATTR__ATIME 0x00000070 /* Setting on how atime should be updated. */ +#define MOUNT_ATTR_RELATIME 0x00000000 /* - Update atime relative to mtime/ctime. */ +#define MOUNT_ATTR_NOATIME 0x00000010 /* - Do not update access times. */ +#define MOUNT_ATTR_STRICTATIME 0x00000020 /* - Always perform atime updates */ +#define MOUNT_ATTR_NODIRATIME 0x00000080 /* Do not update directory access times. */ +#define MOUNT_ATTR_IDMAP 0x00100000 /* Idmap mount to @userns_fd in struct mount_attr. */ +#define MOUNT_ATTR_NOSYMFOLLOW 0x00200000 /* Do not follow symlinks. */ + __BEGIN_DECLS @@ -155,6 +171,11 @@ extern int umount2 (const char *__special_file, int __flags) __THROW; mouting. */ extern int fsopen (const char *__fs_name, unsigned int __flags) __THROW; +/* Create a mount representation for the FD created by fsopen using + FLAGS with ATTR_FLAGS describing who the mount is to be performed. */ +extern int fsmount (int __fd, unsigned int __flags, + unsigned int __ms_flags) __THROW; + __END_DECLS #endif /* _SYS_MOUNT_H */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index a2919f433d..4ac6fe7659 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 +fsmount EXTRA fsmount i:iUU fsmount fsopen EXTRA fsopen i:sU fsopen 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 diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py index 162b01147d..4d4a234f3a 100755 --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py @@ -46,7 +46,11 @@ def main(): linux_version_glibc > linux_version_headers, linux_version_headers > linux_version_glibc) - status = check('FSOPEN_.*') + status = max( + check('FSOPEN_.*'), + check('FSMOUNT_.*'), + # MOUNT_ATTR_SIZE_VER0 is used for mount_setattr. + check('MOUNT_ATTR_.*', 'MOUNT_ATTR_SIZE_VER0')) sys.exit(status) if __name__ == '__main__': diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 65e5d2150d..0293b05d12 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 4c6371b3c4..be216f4686 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 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F From patchwork Mon Jun 6 13:44:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54828 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 62A1D38376CF for ; Mon, 6 Jun 2022 13:47:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 62A1D38376CF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523231; bh=BYtXIm/9BQrceKNpvTCuVuU2GYoZ/1vwSItS1qKrZhE=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=CgMcIdgUbab3QzVjiTltKXhPT0IBZlkgz5seCvQ/7wemXo04Y59YKVoyYzCvYXxJ8 QYHchxlNLfliRngwnQymrymEQo0Q+Q9sVzEfMPvZFaVZQlGzb28OoA+PF4AAcQp7pt TGtZE0OvCUaMRjNdP1D1STV7ibOXQP+wu9dMhkrc= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com [IPv6:2607:f8b0:4864:20::236]) by sourceware.org (Postfix) with ESMTPS id 17A93384146B for ; Mon, 6 Jun 2022 13:44:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 17A93384146B Received: by mail-oi1-x236.google.com with SMTP id q184so2796986oia.1 for ; Mon, 06 Jun 2022 06:44:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BYtXIm/9BQrceKNpvTCuVuU2GYoZ/1vwSItS1qKrZhE=; b=A+41QKSD6MekomSezQQCeBx9C3yQ2ccqRF0gzt3L8jhIri5tUY5afkdbcnRbzj63jz jUS5/aHGg9mPHpEMm8XX3Yzr3Qx9sWyRdk0xFoxARK1SFTTasYH/W0YN1dVWpE7YKg64 VkYGJQeZEgPw/1qsQKDvcsd27Us8DQ/7k/OBL8vMPreZpEEuFp2l1VSEFzGrCW+2AO/d 3/71GQw1YHn1ItyRpdyMheYjjR8+O1UEvoTxiAFiGAWuQll+fYiciOq8lc2OjO8QKPjB 5XDNViKSBmN+kKNOsG3UObe8qBXkgE3xjBLHBnCcOFk0qi3cf3ZBBa/FlPbAb5Tq9MM/ 0B3g== X-Gm-Message-State: AOAM531DRzDTE/ZXOFDShlo3VUgofnDEgr57GViqW9cN+n3ZYS/FlNgA PceQAV6FemZFys1+ue6pyn+uVpjWfdbCJw== X-Google-Smtp-Source: ABdhPJxEhtXw/Dc7fP6GTkhLYELc8k9I3B4HBSZ0EcN5q4mchZT/c+6H0jv0wMlB5pqPPaE7BzG3iw== X-Received: by 2002:a05:6808:171c:b0:2f9:c685:f4d9 with SMTP id bc28-20020a056808171c00b002f9c685f4d9mr14133263oib.21.1654523081019; Mon, 06 Jun 2022 06:44:41 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:40 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 3/8] linux: Add move_mount Date: Mon, 6 Jun 2022 10:44:27 -0300 Message-Id: <20220606134432.1944534-4-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" It was added on Linux 5.2 (2db154b3ea8e14b04fee23e3fdfd5e9d17fbc6ae) as way t move a mount from one place to another and, in the next commit, allow to attach an unattached mount tree. --- NEWS | 6 +++--- 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 + .../unix/sysv/linux/m68k/coldfire/libc.abilist | 1 + .../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 + .../unix/sysv/linux/microblaze/be/libc.abilist | 1 + .../unix/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 + .../linux/powerpc/powerpc32/nofpu/libc.abilist | 1 + .../linux/powerpc/powerpc64/be/libc.abilist | 1 + .../linux/powerpc/powerpc64/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 1 + sysdeps/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 + .../unix/sysv/linux/sparc/sparc32/libc.abilist | 1 + .../unix/sysv/linux/sparc/sparc64/libc.abilist | 1 + sysdeps/unix/sysv/linux/sys/mount.h | 17 +++++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 + sysdeps/unix/sysv/linux/tst-mount-consts.py | 4 +++- sysdeps/unix/sysv/linux/x86_64/64/libc.abilist | 1 + sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist | 1 + 38 files changed, 58 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 51ca68f1da..8ecd5446b5 100644 --- a/NEWS +++ b/NEWS @@ -29,9 +29,9 @@ 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 and fsmound have been added. It is a new mount API - to allow more flexibility on mount operations, specially when used along - namespaces. +* On Linux, the fsopen, fsmount, and move_mount have been added. It is a + new mount API to allow more flexibility on mount operations, specially + when used along namespaces. Deprecated and removed features, and other changes affecting compatibility: diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 1d5b15aec4..26d552ba3b 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -302,6 +302,7 @@ libc { GLIBC_2.36 { fsmount; fsopen; + move_mount; 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 bcad128067..8dba065b81 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2618,6 +2618,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 1d88271a25..08f4750022 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2715,6 +2715,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 c4cc3c17f0..75db763023 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2379,6 +2379,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 cfec9daf7a..fa33f317ac 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -498,6 +498,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 b77416d32f..dba2e4ce42 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -495,6 +495,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 76261943fb..e6ff921c29 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2654,6 +2654,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 29352b69ac..8a40cece83 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2603,6 +2603,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 9c465ec784..a89826049f 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2787,6 +2787,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 ad1268e61f..d1d96b7469 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -2553,6 +2553,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 c63c140612..63a62f267a 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -499,6 +499,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 937ac25d40..f68325f9bc 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2730,6 +2730,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 d144df6ace..247af2075c 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2703,6 +2703,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 87ff6f261f..b0ac3f9009 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2700,6 +2700,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 b0d2b88f14..b22cd6bf2f 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2695,6 +2695,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 2ed23ce297..12fc2cce3e 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2693,6 +2693,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 0048a23416..d3e96dfd43 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2701,6 +2701,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 4b10b6bec2..cb58ed4db0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2604,6 +2604,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 8f905a8def..61ad58a599 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2742,6 +2742,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 60c2cdb6e2..1260dc4e2e 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2125,6 +2125,7 @@ GLIBC_2.35 writev F GLIBC_2.35 wscanf F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 ac5453d9c1..363939762c 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2757,6 +2757,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 772b6d2587..f512ad8baf 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2790,6 +2790,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 bcf1ed9a1c..c9bdc9859c 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2512,6 +2512,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 cf4452775f..f091be30bd 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2814,6 +2814,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 48aaada19d..7ea73f9af8 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2381,6 +2381,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 e08ddc8627..333fa62714 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2581,6 +2581,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 c315714ed8..a867467b12 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2755,6 +2755,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 9d83b3cf7d..dbad5b3163 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2549,6 +2549,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 8e10946936..6f755cc173 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2610,6 +2610,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 6b4d8047c9..77d936aa3c 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2607,6 +2607,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 d222061590..09bb4363e1 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2750,6 +2750,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 a8eb190e46..9df9cb6adb 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2576,6 +2576,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 9fa39c7d09..762b54878c 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -154,6 +154,16 @@ enum #define MOUNT_ATTR_NOSYMFOLLOW 0x00200000 /* Do not follow symlinks. */ +/* move_mount flags. */ +#define MOVE_MOUNT_F_SYMLINKS 0x00000001 /* Follow symlinks on from path */ +#define MOVE_MOUNT_F_AUTOMOUNTS 0x00000002 /* Follow automounts on from path */ +#define MOVE_MOUNT_F_EMPTY_PATH 0x00000004 /* Empty from path permitted */ +#define MOVE_MOUNT_T_SYMLINKS 0x00000010 /* Follow symlinks on to path */ +#define MOVE_MOUNT_T_AUTOMOUNTS 0x00000020 /* Follow automounts on to path */ +#define MOVE_MOUNT_T_EMPTY_PATH 0x00000040 /* Empty to path permitted */ +#define MOVE_MOUNT_SET_GROUP 0x00000100 /* Set sharing group instead */ + + __BEGIN_DECLS /* Mount a filesystem. */ @@ -176,6 +186,13 @@ extern int fsopen (const char *__fs_name, unsigned int __flags) __THROW; extern int fsmount (int __fd, unsigned int __flags, unsigned int __ms_flags) __THROW; +/* Add the mounted FROM_DFD referenced by FROM_PATHNAME filesystem returned + by fsmount in the hierarchy in the place TO_DFD reference by TO_PATHNAME + using FLAGS. */ +extern int move_mount (int __from_dfd, const char *__from_pathname, + int __to_dfd, const char *__to_pathname, + unsigned int flags) __THROW; + __END_DECLS #endif /* _SYS_MOUNT_H */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 4ac6fe7659..7368210cd1 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -37,6 +37,7 @@ mincore - mincore i:aUV mincore mlock - mlock i:bU mlock mlockall - mlockall i:i mlockall mount EXTRA mount i:sssUp __mount mount +move_mount EXTRA move_mount i:isisU move_mount munlock - munlock i:aU munlock munlockall - munlockall i: munlockall nfsservctl EXTRA nfsservctl i:ipp __compat_nfsservctl nfsservctl@GLIBC_2.0:GLIBC_2.28 diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py index 4d4a234f3a..0e8289b833 100755 --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py @@ -50,7 +50,9 @@ def main(): check('FSOPEN_.*'), check('FSMOUNT_.*'), # MOUNT_ATTR_SIZE_VER0 is used for mount_setattr. - check('MOUNT_ATTR_.*', 'MOUNT_ATTR_SIZE_VER0')) + check('MOUNT_ATTR_.*', 'MOUNT_ATTR_SIZE_VER0'), + # MOVE_MOUNT__MASK may vary depending of the kernel version. + check('MOVE_MOUNT_.*', 'MOVE_MOUNT__MASK')) sys.exit(status) if __name__ == '__main__': diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 0293b05d12..4829450ad0 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2527,6 +2527,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount 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 be216f4686..caea228bcb 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2633,6 +2633,7 @@ GLIBC_2.35 epoll_pwait2 F GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F GLIBC_2.36 pidfd_send_signal F From patchwork Mon Jun 6 13:44:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54829 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5E5CE38376CF for ; Mon, 6 Jun 2022 13:47:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5E5CE38376CF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523273; bh=2rZ/jRc7wSSsOwFxqNd+MKVQRVCaY2RyrHTSLONXAe4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=mRBd0oLgZgjMiyKl5I+1qsYhvPpFH76ZIPSae9BDzw951geQOGsG3mKQelblRXf+v ROxKYjMgOEV9ckqic/1YxV9lRnYQ5ZoXL4PRwZSmQeW/NQ65m4G6GqxNDHxibViBnD luUmUYAFOb2AupLiSq2PYvjB4+AEROYi6IkOjLdA= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oa1-x33.google.com (mail-oa1-x33.google.com [IPv6:2001:4860:4864:20::33]) by sourceware.org (Postfix) with ESMTPS id 376C83834F19 for ; Mon, 6 Jun 2022 13:44:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 376C83834F19 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-f16a3e0529so19202193fac.2 for ; Mon, 06 Jun 2022 06:44:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2rZ/jRc7wSSsOwFxqNd+MKVQRVCaY2RyrHTSLONXAe4=; b=j1FMeD1fb88ZssCTNx8AyjZJcAsUseO+QiReMIAkjd7AnFg1zd7UO2CSn9XBw/WFZD vqm3zU/Q7rW263chJwaOtjyGxbnWQ8ChgQSTIbWIHafCbZoW+ZEaNOQcsRuTSay3vh+L UsVLhEaptD4bEOCgbVyeiJxinzgcPWtn+mBKboWGWu0WgCemYuNy584DRfaaqvmkbFpD PBo0sfp6vCfrJpfJ26GVdbsm2bJHmJqrZ18sj2krhLlBhH3xO5LFlmQLmL0K+E8aTC5K 5ycubYG3MIbYhhQzjt3uR3e35090K2/9GRfq8HuQ/KEX1PsPUDcPfJENuC1jSeF/zaI6 Mr5A== X-Gm-Message-State: AOAM5318eHf5IIjRPdHyXR7KYfW1bNhoMc9VqgAocpYNhlSAQMUeKnkK 5RbAsSre3ZA+m7GkPKCvCXXd48paGIlezg== X-Google-Smtp-Source: ABdhPJwV3ZpSHgJcuWQ4O+5Ks+485G2wrMlVIhuMpdoIbOqJRpA4uSfSG0opKcDB10FDD5TzCtfyqg== X-Received: by 2002:a05:6870:f6aa:b0:f2:d904:fb37 with SMTP id el42-20020a056870f6aa00b000f2d904fb37mr13957459oab.239.1654523082471; Mon, 06 Jun 2022 06:44:42 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:42 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 4/8] linux: Add fsconfig Date: Mon, 6 Jun 2022 10:44:28 -0300 Message-Id: <20220606134432.1944534-5-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" It was added on Linux 5.2 (ecdab150fddb42fe6a739335257949220033b782) as a way to a configure filesystem creation context and trigger actions upon it, to be used in conjunction with fsopen, fspick and fsmount. The fsconfig_command commands are currently only defined as an enum, so they can't be checked on tst-mount-consts.py with current test support. --- NEWS | 6 ++--- 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 | 26 +++++++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 + sysdeps/unix/sysv/linux/tst-mount-consts.py | 1 + .../unix/sysv/linux/x86_64/64/libc.abilist | 1 + .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 + 38 files changed, 65 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 8ecd5446b5..05140f0ac9 100644 --- a/NEWS +++ b/NEWS @@ -29,9 +29,9 @@ 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, fsmount, and move_mount have been added. It is a - new mount API to allow more flexibility on mount operations, specially - when used along namespaces. +* On Linux, the fsopen, fsmount, move_mount, fsconfig have been added. + It is a new mount API to allow more flexibility on mount operations, + specially when used along namespaces. Deprecated and removed features, and other changes affecting compatibility: diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 26d552ba3b..831a366492 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -300,6 +300,7 @@ libc { epoll_pwait2; } GLIBC_2.36 { + fsconfig; fsmount; fsopen; move_mount; diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index 8dba065b81..0b8699dd94 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 08f4750022..dbc552de45 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index 75db763023..b8411014f0 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index fa33f317ac..618467399b 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index dba2e4ce42..3afbd61ba3 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index e6ff921c29..189835a12f 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 8a40cece83..41d645f3a0 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index a89826049f..c39a33655a 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index d1d96b7469..611b31fc1d 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index 63a62f267a..8504a94c75 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index f68325f9bc..2cf5ca75d2 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 247af2075c..667098908d 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index b0ac3f9009..a131265c9c 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index b22cd6bf2f..9a083512f7 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 12fc2cce3e..71b952dc6a 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index d3e96dfd43..f824d143fa 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index cb58ed4db0..70ff16e752 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index 61ad58a599..e3e30f9f72 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index 1260dc4e2e..c2c6c1678f 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 363939762c..0ca95aa512 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index f512ad8baf..2256356cdb 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index c9bdc9859c..b27e3b9c7c 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index f091be30bd..ac3897e8c6 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index 7ea73f9af8..f7abfd54e3 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 333fa62714..d4ba82b0a7 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index a867467b12..e15c8f1c50 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index dbad5b3163..3f74bf6af0 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 6f755cc173..e9610718d2 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 77d936aa3c..754c495a6f 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index 09bb4363e1..368a9177e3 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 9df9cb6adb..d644201962 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h index 762b54878c..61d79125fe 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -163,6 +163,27 @@ enum #define MOVE_MOUNT_T_EMPTY_PATH 0x00000040 /* Empty to path permitted */ #define MOVE_MOUNT_SET_GROUP 0x00000100 /* Set sharing group instead */ +/* The type of fsconfig call made. */ +enum fsconfig_command +{ + FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */ +#define FSCONFIG_SET_FLAG FSCONFIG_SET_FLAG + FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */ +#define FSCONFIG_SET_STRING FSCONFIG_SET_STRING + FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */ +#define FSCONFIG_SET_BINARY FSCONFIG_SET_BINARY + FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */ +#define FSCONFIG_SET_PATH FSCONFIG_SET_PATH + FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */ +#define FSCONFIG_SET_PATH_EMPTY FSCONFIG_SET_PATH_EMPTY + FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */ +#define FSCONFIG_SET_FD FSCONFIG_SET_FD + FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */ +#define FSCONFIG_CMD_CREATE FSCONFIG_CMD_CREATE + FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */ +#define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE +}; + __BEGIN_DECLS @@ -193,6 +214,11 @@ extern int move_mount (int __from_dfd, const char *__from_pathname, int __to_dfd, const char *__to_pathname, unsigned int flags) __THROW; +/* Set parameters and trigger CMD action on the FD context. KEY, VALUE, + and AUX are used depending ng of the CMD. */ +extern int fsconfig (int __fd, unsigned int __cmd, const char *__key, + const char *__value, int __aux) __THROW; + __END_DECLS #endif /* _SYS_MOUNT_H */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 7368210cd1..da163c8ee5 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 +fsconfig EXTRA fsconfig i:iUssi fsconfig fsmount EXTRA fsmount i:iUU fsmount fsopen EXTRA fsopen i:sU fsopen get_kernel_syms EXTRA get_kernel_syms i:p __compat_get_kernel_syms get_kernel_syms@GLIBC_2.0:GLIBC_2.23 diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py index 0e8289b833..20ba36db14 100755 --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py @@ -46,6 +46,7 @@ def main(): linux_version_glibc > linux_version_headers, linux_version_headers > linux_version_glibc) + # FS_CONFIG commads are only defined as enum on kernel header. status = max( check('FSOPEN_.*'), check('FSMOUNT_.*'), diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 4829450ad0..0ff913610c 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index caea228bcb..2aa67048ac 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 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 move_mount F From patchwork Mon Jun 6 13:44:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54830 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 893E93836651 for ; Mon, 6 Jun 2022 13:48:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 893E93836651 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523320; bh=mE4b54lk+OVbH14cct9UfWszaMq91hyvaO0twuCakiY=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=ovnnX7EZc9J7ktkJ63DUmmCoOr7ftJq2WFWH9HPpL5L/cKBYFUg7an8w5wvlYuVvu SCX4it5BSqHdXP0Ye3wxEFRW9oyPsLXsZk2C1ymmzdwHyEplMBTbSMPRefb5bTHQoF ZzIGPDqx3pUn6aWCEGO/+gNy8dLNfkITDn6heymw= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oa1-x2f.google.com (mail-oa1-x2f.google.com [IPv6:2001:4860:4864:20::2f]) by sourceware.org (Postfix) with ESMTPS id EAB693834F10 for ; Mon, 6 Jun 2022 13:44:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EAB693834F10 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-f2bb84f9edso19150276fac.10 for ; Mon, 06 Jun 2022 06:44:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mE4b54lk+OVbH14cct9UfWszaMq91hyvaO0twuCakiY=; b=Mduu8BxMlLLdQDP7pYIuCSEOhQH4KUh3Wp2f9H/fW+lMZ1Wdi7Rp0DgottNdz0/mzG aHj7RnziFrtW/aI1RyRlYywrWAdrjHjC8/OQ4HHJVLMB2d0V9ayIPAbgHGtMBRaaKVA5 N8dOpmjFd6iKjX5s/vBtvbJx24lxv/AJ10i3J6jdHFFFZJQVhqADGntlLgAsxogtl0G8 OKqYVFkwpXT9ZLlnIqyxDUnmJEPAgQ3w1kIX0kTzy5VuaEp8whYYaTR3+TH6678tYSLr RI+vz+1N3NblunSsH+Fiy+EQ4RmI6bjMmuvfp5eskGQmnYy6OaNbVAdvSF2QgTD6Hg8I bbAA== X-Gm-Message-State: AOAM533L63ORz8eHRCnkQw9DlCnbyBz0egcvIpSt4dsBjX8Ddnl8PWTN +OWasOs44q2FG+MVoHK/DYBIjfvYnyqQaQ== X-Google-Smtp-Source: ABdhPJy2rs7MnXHnynWxOeQF/jzTHoaZlVXMkhK+nyjt7Od7+qudiH5cQ/Ode26laoiJaearPg4Ijg== X-Received: by 2002:a05:6870:5590:b0:e9:1eea:e381 with SMTP id n16-20020a056870559000b000e91eeae381mr13534368oao.221.1654523083871; Mon, 06 Jun 2022 06:44:43 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:43 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 5/8] linux: Add fspick Date: Mon, 6 Jun 2022 10:44:29 -0300 Message-Id: <20220606134432.1944534-6-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" It was added on Linux 5.2 (cf3cba4a429be43e5527a3f78859b1bfd9ebc5fb) that can be used to pick an existing mountpoint into an filesystem context which can thereafter be used to reconfigure a superblock with fsconfig syscall. --- NEWS | 6 +++--- 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 + sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 1 + sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/be/libc.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist | 1 + .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 1 + sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist | 1 + sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist | 1 + sysdeps/unix/sysv/linux/nios2/libc.abilist | 1 + sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 + .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 1 + .../sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 1 + .../sysv/linux/powerpc/powerpc64/be/libc.abilist | 1 + .../sysv/linux/powerpc/powerpc64/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist | 1 + sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 1 + sysdeps/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 + sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist | 1 + sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist | 1 + sysdeps/unix/sysv/linux/sys/mount.h | 12 ++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 + sysdeps/unix/sysv/linux/x86_64/64/libc.abilist | 1 + sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist | 1 + 37 files changed, 50 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 05140f0ac9..e8f88a5bf2 100644 --- a/NEWS +++ b/NEWS @@ -29,9 +29,9 @@ 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, fsmount, move_mount, fsconfig have been added. - It is a new mount API to allow more flexibility on mount operations, - specially when used along namespaces. +* On Linux, the fsopen, fsmount, move_mount, fsconfig, and fspick have + been added. It is a new mount API to allow more flexibility on mount + operations, specially when used along namespaces. Deprecated and removed features, and other changes affecting compatibility: diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 831a366492..7bc5861513 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -303,6 +303,7 @@ libc { fsconfig; fsmount; fsopen; + fspick; move_mount; pidfd_open; pidfd_getfd; diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index 0b8699dd94..4eaffedf7f 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2619,6 +2619,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index dbc552de45..6acce2a762 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2716,6 +2716,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index b8411014f0..9d254a3bc3 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2380,6 +2380,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index 618467399b..95026bc448 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -499,6 +499,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 3afbd61ba3..096246378c 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -496,6 +496,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 189835a12f..166008f970 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2655,6 +2655,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 41d645f3a0..155cc6ed96 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2604,6 +2604,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index c39a33655a..67f7e36556 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2788,6 +2788,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index 611b31fc1d..dbb75aa50f 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -2554,6 +2554,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index 8504a94c75..6d72cedf89 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -500,6 +500,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 2cf5ca75d2..7899efa0e0 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2731,6 +2731,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 667098908d..162a85a8a8 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2704,6 +2704,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index a131265c9c..a5e28ec2ae 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2701,6 +2701,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 9a083512f7..33627f4b67 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2696,6 +2696,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 71b952dc6a..333547fc56 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2694,6 +2694,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index f824d143fa..a46a1aefe7 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2702,6 +2702,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 70ff16e752..b9b88321a7 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2605,6 +2605,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index e3e30f9f72..0f2293d6a1 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2743,6 +2743,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index c2c6c1678f..812c05804e 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2126,6 +2126,7 @@ GLIBC_2.35 wscanf F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 0ca95aa512..568e5ab91f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2758,6 +2758,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 2256356cdb..bf5bab018d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2791,6 +2791,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index b27e3b9c7c..cffbb88886 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2513,6 +2513,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index ac3897e8c6..8dac584380 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2815,6 +2815,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index f7abfd54e3..431a9a30a1 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2382,6 +2382,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index d4ba82b0a7..ec86269bf7 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2582,6 +2582,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index e15c8f1c50..fe437d8e61 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2756,6 +2756,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index 3f74bf6af0..e802e8da7f 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2550,6 +2550,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index e9610718d2..c0a7196f5a 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2611,6 +2611,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 754c495a6f..45589bac28 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2608,6 +2608,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index 368a9177e3..9b84bc0143 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2751,6 +2751,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index d644201962..362a22903a 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2577,6 +2577,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h index 61d79125fe..84af5e51fc 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -163,6 +163,14 @@ enum #define MOVE_MOUNT_T_EMPTY_PATH 0x00000040 /* Empty to path permitted */ #define MOVE_MOUNT_SET_GROUP 0x00000100 /* Set sharing group instead */ + +/* fspick flags. */ +#define FSPICK_CLOEXEC 0x00000001 +#define FSPICK_SYMLINK_NOFOLLOW 0x00000002 +#define FSPICK_NO_AUTOMOUNT 0x00000004 +#define FSPICK_EMPTY_PATH 0x00000008 + + /* The type of fsconfig call made. */ enum fsconfig_command { @@ -219,6 +227,10 @@ extern int move_mount (int __from_dfd, const char *__from_pathname, extern int fsconfig (int __fd, unsigned int __cmd, const char *__key, const char *__value, int __aux) __THROW; +/* Equivalent of fopen for for an existing mount point. */ +extern int fspick (int __dfd, const char *__path, unsigned int __flags) + __THROW; + __END_DECLS #endif /* _SYS_MOUNT_H */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index da163c8ee5..e9f39844df 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -15,6 +15,7 @@ flock - flock i:ii __flock flock fsconfig EXTRA fsconfig i:iUssi fsconfig fsmount EXTRA fsmount i:iUU fsmount fsopen EXTRA fsopen i:sU fsopen +fspick EXTRA fspick i:isU fspick 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/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 0ff913610c..93dab79cdc 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2528,6 +2528,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 2aa67048ac..24daa92e90 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2634,6 +2634,7 @@ GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F +GLIBC_2.36 fspick F GLIBC_2.36 move_mount F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F From patchwork Mon Jun 6 13:44:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54832 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 30E6E3838005 for ; Mon, 6 Jun 2022 13:50:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 30E6E3838005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523409; bh=gQsV9292Ftd7/3HNC7hF6BFaIUiLBVcb9UssvupA3dc=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Bcfco6Lny5WzJOOtmjIrNjkCNlJ/2IdXeRTN5MWf8Ii0VV99a4BvpSjPK0P4Jy7oU cxO8Si9rwb0nDCz3yMF5ivDLfyqr6KpWUogL3k7IqlO6LkaFWiG7SlHYTTPsdHTS8u EhD8dzpySYtVjQZGlsGdRIqFYm9j4USEwq4fXrOQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oa1-x34.google.com (mail-oa1-x34.google.com [IPv6:2001:4860:4864:20::34]) by sourceware.org (Postfix) with ESMTPS id DAAE83834F19 for ; Mon, 6 Jun 2022 13:44:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DAAE83834F19 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-e5e433d66dso19161855fac.5 for ; Mon, 06 Jun 2022 06:44:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gQsV9292Ftd7/3HNC7hF6BFaIUiLBVcb9UssvupA3dc=; b=3nf4lVEj/9GRjSr8SECIWHK8hg8hWyeNDbeILCTHlChSnSUVbD7XrMPfyrujBiY2lZ Y9ZZ0wo7sYIeGxSU3MD3il7SKRXo7dPdjrGTeBh/Vzgfo9uIt5ahRTZOc29hV92hOz4K +F1Yx9vLfsovO++cWhNldjXeB7JWvt5ViRcZ/lZfoiHLKuI9ZC7h5G9M2lHILNun/sAX sxFliSOt05rrgylZrabh6WYESRewnp+09hAyuXyfDO/9b/7tJGAKIMBlihj0/o7HceDZ ajvA6ebOVSxh28BrxEw2Nfbeipb1ktGrtNce3hZ0ZCEhwjpFYwogkDUk29Uv9V/JIERw 25vA== X-Gm-Message-State: AOAM530cYr+MD1gIH7hnYXqq4wEc79a7DIOh/JkE3bm/7FvMtb/8o7id 5HRuyCENF9uJRLk17v9j917WunLL0O31vQ== X-Google-Smtp-Source: ABdhPJyQhskxqvaszO3nRitdwbdkWWXNKPQvAcBHo5gKSqQOKr4XqoVzneXbD1sPDOyG/UYGMHRP3A== X-Received: by 2002:a05:6870:f61c:b0:f1:ccf4:ab25 with SMTP id ek28-20020a056870f61c00b000f1ccf4ab25mr12825038oab.238.1654523085404; Mon, 06 Jun 2022 06:44:45 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:44 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 6/8] linux: Add open_tree Date: Mon, 6 Jun 2022 10:44:30 -0300 Message-Id: <20220606134432.1944534-7-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" It was added on Linux 5.2 (a07b20004793d8926f78d63eb5980559f7813404) to return a O_PATH-opened file descriptor to an existing mountpoint. --- NEWS | 4 ++-- 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 + sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 1 + sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/be/libc.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist | 1 + sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 1 + sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist | 1 + sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist | 1 + sysdeps/unix/sysv/linux/nios2/libc.abilist | 1 + sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 + .../unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 1 + .../unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 1 + .../unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 1 + .../unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist | 1 + sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 1 + sysdeps/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 + sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist | 1 + sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist | 1 + sysdeps/unix/sysv/linux/sys/mount.h | 9 +++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 + sysdeps/unix/sysv/linux/tst-mount-consts.py | 3 ++- sysdeps/unix/sysv/linux/x86_64/64/libc.abilist | 1 + sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist | 1 + 38 files changed, 48 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index e8f88a5bf2..de12657449 100644 --- a/NEWS +++ b/NEWS @@ -29,8 +29,8 @@ 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, fsmount, move_mount, fsconfig, and fspick have - been added. It is a new mount API to allow more flexibility on mount +* On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, and open_tree + have been added. It is a new mount API to allow more flexibility on mount operations, specially when used along namespaces. Deprecated and removed features, and other changes affecting compatibility: diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 7bc5861513..b70530ef40 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -305,6 +305,7 @@ libc { fsopen; fspick; move_mount; + open_tree; 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 4eaffedf7f..2a666d8135 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2621,6 +2621,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 6acce2a762..41bd7c1959 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2718,6 +2718,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 9d254a3bc3..198fdab2f7 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2382,6 +2382,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 95026bc448..6fd4e75df2 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -501,6 +501,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 096246378c..3ec572b50f 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -498,6 +498,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 166008f970..94f3deb3e5 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2657,6 +2657,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 155cc6ed96..a7deaf3e26 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2606,6 +2606,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 67f7e36556..5f1a1bc4d0 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2790,6 +2790,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 dbb75aa50f..1af8a55836 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -2556,6 +2556,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 6d72cedf89..ad3a4b4008 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -502,6 +502,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 7899efa0e0..87e76f33a0 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2733,6 +2733,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 162a85a8a8..73df42c7aa 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2706,6 +2706,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 a5e28ec2ae..5c2e936547 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2703,6 +2703,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 33627f4b67..45919d27d6 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2698,6 +2698,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 333547fc56..8321b0efac 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2696,6 +2696,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 a46a1aefe7..c7198646d2 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2704,6 +2704,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 b9b88321a7..8b3cca2a54 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2607,6 +2607,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 0f2293d6a1..2f1595bb35 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2745,6 +2745,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 812c05804e..d1d4e12d12 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2128,6 +2128,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 568e5ab91f..50c9fadaf0 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2760,6 +2760,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 bf5bab018d..8998a560cd 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2793,6 +2793,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 cffbb88886..bca46bdbe5 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2515,6 +2515,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 8dac584380..97f6d96cd6 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2817,6 +2817,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 431a9a30a1..f588745b28 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2384,6 +2384,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 ec86269bf7..1acf8a4c54 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2584,6 +2584,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 fe437d8e61..7c8b410f1a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2758,6 +2758,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 e802e8da7f..ba9317ee01 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2552,6 +2552,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 c0a7196f5a..75fa8834f1 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2613,6 +2613,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 45589bac28..4a4f8ff33f 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2610,6 +2610,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 9b84bc0143..d26671dba8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2753,6 +2753,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 362a22903a..16c2a98ab5 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2579,6 +2579,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 84af5e51fc..eb6705a091 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -21,6 +21,7 @@ #ifndef _SYS_MOUNT_H #define _SYS_MOUNT_H 1 +#include #include #include @@ -192,6 +193,10 @@ enum fsconfig_command #define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE }; +/* open_tree flags. */ +#define OPEN_TREE_CLONE 1 /* Clone the target tree and attach the clone */ +#define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */ + __BEGIN_DECLS @@ -231,6 +236,10 @@ extern int fsconfig (int __fd, unsigned int __cmd, const char *__key, extern int fspick (int __dfd, const char *__path, unsigned int __flags) __THROW; +/* Open the mount point FILENAME in directory DFD using FLAGS. */ +extern int open_tree (int __dfd, const char *__filename, unsigned int __flags) + __THROW; + __END_DECLS #endif /* _SYS_MOUNT_H */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index e9f39844df..e5e2b528fd 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -43,6 +43,7 @@ move_mount EXTRA move_mount i:isisU move_mount munlock - munlock i:aU munlock munlockall - munlockall i: munlockall nfsservctl EXTRA nfsservctl i:ipp __compat_nfsservctl nfsservctl@GLIBC_2.0:GLIBC_2.28 +open_tree EXTRA open_tree i:i:s:U open_tree pipe2 - pipe2 i:fi __pipe2 pipe2 pidfd_open EXTRA pidfd_open i:iU pidfd_open pidfd_getfd EXTRA pidfd_getfd i:iiU pidfd_getfd diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py index 20ba36db14..aa46b83ff0 100755 --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py @@ -53,7 +53,8 @@ def main(): # MOUNT_ATTR_SIZE_VER0 is used for mount_setattr. check('MOUNT_ATTR_.*', 'MOUNT_ATTR_SIZE_VER0'), # MOVE_MOUNT__MASK may vary depending of the kernel version. - check('MOVE_MOUNT_.*', 'MOVE_MOUNT__MASK')) + check('MOVE_MOUNT_.*', 'MOVE_MOUNT__MASK'), + check('OPEN_TREE_*')) sys.exit(status) if __name__ == '__main__': diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 93dab79cdc..bd7c4ef801 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2530,6 +2530,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree 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 24daa92e90..1c7f60b41a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2636,6 +2636,7 @@ GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F GLIBC_2.36 move_mount F +GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F GLIBC_2.36 pidfd_open F GLIBC_2.36 pidfd_send_signal F From patchwork Mon Jun 6 13:44:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54831 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3F72E3834F38 for ; Mon, 6 Jun 2022 13:49:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3F72E3834F38 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523367; bh=v7xAgQ4vWGiky2tSjKs0mf7w0/twPsBIeRZvCCIZB8Q=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=twh9R3TOXciCUTrhBtUZkgESJ1oxz2JqsOssccwCZgzQQ147+z8PupXZEBtC03fqg eQkezGUzQVhPzEJIrFNr4VFvljSTLIVZbxJvIzC4CWEFTAavf5X8oBKZft0gdecUqF XOKi9KjTu6e+YR3ax3fHS+RvRi3fA4uGDCP3T2H8= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-ot1-x334.google.com (mail-ot1-x334.google.com [IPv6:2607:f8b0:4864:20::334]) by sourceware.org (Postfix) with ESMTPS id 2B690383A333 for ; Mon, 6 Jun 2022 13:44:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2B690383A333 Received: by mail-ot1-x334.google.com with SMTP id g13-20020a9d6b0d000000b0060b13026e0dso10782270otp.8 for ; Mon, 06 Jun 2022 06:44:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=v7xAgQ4vWGiky2tSjKs0mf7w0/twPsBIeRZvCCIZB8Q=; b=yhX/4o/kd7loJg1/LlYF0/K36pFSyvA606IuPkJEcGJg7tkOKDeVbNiMC6783o7GRl 7MJJ5yYS5iGu3e+Qb0rcMjj73nFDlb2R0BH+iBG+H0qpddfQHEI7WX9+THAtu8bJ+xIk MBAI+sf7kXjngjWxEIxOcOusaXGvtRQC3UUrk26CnrqfbY2kXDr+QzAZTmARzNOtDCVc FyifbuYqo7JzX/0mWPLaWS5dCWNrvNfNybFlGCK/MFc/d16/3lKMno72jn9gK6344LFR OHFoNJd+ucD2ppWThspCKoUllUlB1DeabnDeMFmdfIQeunlm9hvZrCFHe746GVDfuvn6 LyiA== X-Gm-Message-State: AOAM533jyIhAvvJtwd/RWqGWy0dFtvUTxIgaQtUQmoR1i1g62VFLo8Ai pZLKCAqj99RSDVWJaH7HPXyBbI6dM2xbNw== X-Google-Smtp-Source: ABdhPJwitL4Dcd+YWLHZyu/khXj6qzT0yml8CTPNbRN/wgjObLH+4eGi19xE8llE5+F5oHlBvcW4ug== X-Received: by 2002:a9d:6358:0:b0:60b:1f1e:8425 with SMTP id y24-20020a9d6358000000b0060b1f1e8425mr9843462otk.243.1654523087248; Mon, 06 Jun 2022 06:44:47 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:46 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 7/8] linux: Add tst-mount to check for Linux new mount API Date: Mon, 6 Jun 2022 10:44:31 -0300 Message-Id: <20220606134432.1944534-8-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" The new mount API was added on Linux 5.2 with six new syscalls: fsopen, fsconfig, fsmount, move_mount, fspick, and open_tree. The new test is far from extensive and only check for error path and minimal funcionality to see if arguments are issued correctly. Checked on x86_64-linux-gnu. --- sysdeps/unix/sysv/linux/Makefile | 1 + sysdeps/unix/sysv/linux/tst-mount.c | 95 +++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/tst-mount.c diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 7ffcf7ed83..2ccc92b6b8 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -130,6 +130,7 @@ tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \ tst-getauxval \ tst-pidfd \ tst-process_mrelease \ + tst-mount \ # tests # process_madvise requires CAP_SYS_ADMIN. diff --git a/sysdeps/unix/sysv/linux/tst-mount.c b/sysdeps/unix/sysv/linux/tst-mount.c new file mode 100644 index 0000000000..12a665f950 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-mount.c @@ -0,0 +1,95 @@ +/* Basic tests for the new Linux API added on Linux 5.2. + 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; see the file COPYING.LIB. If + not, see . */ + +#include +#include +#include +#include +#include +#include + +static void +subprocess (void) +{ + int r = fsopen ("it_should_be_not_a_valid_mount", 0); + TEST_VERIFY_EXIT (r == -1); + if (errno == ENOSYS) + FAIL_UNSUPPORTED ("kernel does not support new mount API, skipping test"); + TEST_COMPARE (errno, ENODEV); + + int fd = fsopen ("tmpfs", FSOPEN_CLOEXEC); + TEST_VERIFY (fd != -1); + + TEST_COMPARE (fsconfig (-1, FSCONFIG_SET_STRING, "size", "2048", 0), -1); + TEST_COMPARE (errno, EINVAL); + + { + int r = fsconfig (fd, FSCONFIG_SET_STRING, "size", "2048", 0); + TEST_VERIFY (r != -1); + r = fsconfig (fd, FSCONFIG_CMD_CREATE, NULL, NULL, 0); + TEST_VERIFY (r != -1); + } + + TEST_COMPARE (fsmount (-1, FSMOUNT_CLOEXEC, MOUNT_ATTR_NODEV), -1); + TEST_COMPARE (errno, EBADF); + + int mfd = fsmount (fd, FSMOUNT_CLOEXEC, MOUNT_ATTR_NODEV); + TEST_VERIFY (mfd != -1); + + TEST_COMPARE (move_mount (-1, "", AT_FDCWD, "/tmp", 0), -1); + TEST_COMPARE (errno, ENOENT); + { + int r = move_mount (mfd, "", AT_FDCWD, "/tmp", MOVE_MOUNT_F_EMPTY_PATH); + TEST_VERIFY (r != -1); + } + + TEST_COMPARE (fspick (AT_FDCWD, "", 0), -1); + TEST_COMPARE (errno, ENOENT); + { + int pfd = fspick (AT_FDCWD, "/tmp", FSPICK_CLOEXEC); + TEST_VERIFY (pfd != -1); + } + + TEST_COMPARE (open_tree (AT_FDCWD, "", 0), -1); + TEST_COMPARE (errno, ENOENT); + { + int fd_tree = open_tree (AT_FDCWD, "/tmp", + OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC); + TEST_VERIFY (fd_tree != -1); + } + + _exit (0); +} + +static int +do_test (void) +{ + support_become_root (); + + pid_t pid = xfork (); + if (pid == 0) + subprocess (); + + int status; + xwaitpid (pid, &status, 0); + TEST_VERIFY (WIFEXITED (status)); + + return 0; +} + +#include From patchwork Mon Jun 6 13:44:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 54833 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1A423384189E for ; Mon, 6 Jun 2022 13:50:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1A423384189E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654523456; bh=/NqwD9hF3CggXunHPSaEBi76Fy2irrA+cNrdo36rOGY=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=RHjee3gXDlHmncvbAcg22STIkryV1LJ5t0QqhjxjH9WdVfWdCeXQBSckSzFUWMoVl i8NHhuXiuj4trYu0K80cvdpAahjX5KSJ8Bisaq9HtQ2MK/1f5IZt9Cp2Yb5pqxSJ6n El730wjojDfGItvWE+SrvqR1kJb7/PYx4BydQQJg= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oa1-x31.google.com (mail-oa1-x31.google.com [IPv6:2001:4860:4864:20::31]) by sourceware.org (Postfix) with ESMTPS id EAFA53836678 for ; Mon, 6 Jun 2022 13:44:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EAFA53836678 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-fb1ae0cd9cso8579258fac.13 for ; Mon, 06 Jun 2022 06:44:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/NqwD9hF3CggXunHPSaEBi76Fy2irrA+cNrdo36rOGY=; b=ntI49ZdVkwfNzwbtazO9VyLyMd/rT5BAu3RqAJ4lGXqh2QpLwq3p6NzkWyjD2rF5TL 8m6T7ha390if/Rg6uZZqeGweia7M/lu26n2BU7t36CWvF3Xp1SbhWgJ5VY/siLekdMwv Sr2jPBi/brMXDoBH0ogQRvhR3MOuqvn98u7/nUQT5tRZ97rCvkKpatWFzH+fvF9dD+0o PrFRFEKB75btgFwv3+Ie618AUnLSeyKgeM1V+74t0e1+LvAxcv23z1z6N6CqLOARkgd2 UZwY6zk/vDzcj7pZF9BLbZKiqM7k4KzbO+nH6LLieZzv84CM7TsZd8aPQDHz5oyhvP1m av+w== X-Gm-Message-State: AOAM5303vMQVmwQ1LXyBeqYsA6UzhK3ryDRilEt1byacRHRpcy/Rwo8o eIVaXHH3mHFvxuloRx6Tensx7OQ+uFY6JA== X-Google-Smtp-Source: ABdhPJwrsJNVLC9pVec61culbLT5BrBdus/xnmO7IXIBd1nMCxnfGPnD6tTnQhdPF+mQvgFIz4QxCQ== X-Received: by 2002:a05:6870:d68e:b0:e2:861:8b15 with SMTP id z14-20020a056870d68e00b000e208618b15mr30848985oap.156.1654523088941; Mon, 06 Jun 2022 06:44:48 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:1449:411f:94f7:5ec3]) by smtp.gmail.com with ESMTPSA id f8-20020a4ad808000000b0035eb4e5a6bdsm7743793oov.19.2022.06.06.06.44.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 06:44:48 -0700 (PDT) To: libc-alpha@sourceware.org, Carlos O'Donell Subject: [PATCH v5 8/8] linux: Add mount_setattr Date: Mon, 6 Jun 2022 10:44:32 -0300 Message-Id: <20220606134432.1944534-9-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> References: <20220606134432.1944534-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" It was added on Linux 5.12 (2a1867219c7b27f928e2545782b86daaf9ad50bd) to allow change the properties of a mount or a mount tree using file descriptors which the new mount api is based on. Checked on x86_64-linux-gnu. --- NEWS | 6 ++-- 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 | 22 ++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 + sysdeps/unix/sysv/linux/tst-mount.c | 30 +++++++++++++++++-- .../unix/sysv/linux/x86_64/64/libc.abilist | 1 + .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 + 38 files changed, 87 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index de12657449..696de3962b 100644 --- a/NEWS +++ b/NEWS @@ -29,9 +29,9 @@ 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, fsmount, move_mount, fsconfig, fspick, and open_tree - have been added. It is a new mount API to allow more flexibility on mount - operations, specially when used along namespaces. +* On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, open_tree, + and mount_setattr have been added. It is a new mount API to allow more + flexibility on mount operations, specially when used along namespaces. Deprecated and removed features, and other changes affecting compatibility: diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index b70530ef40..65d2ceda2c 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -305,6 +305,7 @@ libc { fsopen; fspick; move_mount; + mount_setattr; open_tree; pidfd_open; pidfd_getfd; diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index 2a666d8135..16d34b55c6 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2620,6 +2620,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 41bd7c1959..3f794bea0f 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2717,6 +2717,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index 198fdab2f7..072627810c 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2381,6 +2381,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index 6fd4e75df2..dbd5f07e6e 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -500,6 +500,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 3ec572b50f..0f02d79faa 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -497,6 +497,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 94f3deb3e5..11d3b36a78 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2656,6 +2656,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index a7deaf3e26..5caa1321b1 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2605,6 +2605,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index 5f1a1bc4d0..276d7d5619 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2789,6 +2789,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index 1af8a55836..5e2249518e 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -2555,6 +2555,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index ad3a4b4008..802469a5b9 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -501,6 +501,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 87e76f33a0..2f949397df 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2732,6 +2732,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 73df42c7aa..f63cc9cd4c 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2705,6 +2705,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index 5c2e936547..88d2b707f9 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2702,6 +2702,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 45919d27d6..6c2bc0ee78 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2697,6 +2697,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 8321b0efac..09c9980d95 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2695,6 +2695,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index c7198646d2..763920ea8f 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2703,6 +2703,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 8b3cca2a54..36d30558c1 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2606,6 +2606,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index 2f1595bb35..e4383fe464 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2744,6 +2744,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index d1d4e12d12..735a8eea7e 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2127,6 +2127,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 50c9fadaf0..715dd31afe 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2759,6 +2759,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 8998a560cd..ac4b69e5fc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2792,6 +2792,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index bca46bdbe5..fd42f1bc11 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2514,6 +2514,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index 97f6d96cd6..24688916dd 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2816,6 +2816,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index f588745b28..536eddf9f1 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2383,6 +2383,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 1acf8a4c54..214b4f1c87 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2583,6 +2583,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 7c8b410f1a..bd738a4eb8 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2757,6 +2757,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index ba9317ee01..170361236a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2551,6 +2551,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 75fa8834f1..88fcd03300 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2612,6 +2612,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 4a4f8ff33f..f1115ef46d 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2609,6 +2609,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index d26671dba8..6063da1acf 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2752,6 +2752,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 16c2a98ab5..780d2c0987 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2578,6 +2578,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h index eb6705a091..4929d84027 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -23,6 +23,8 @@ #include #include +#include +#include #include #define BLOCK_SIZE 1024 @@ -155,6 +157,17 @@ enum #define MOUNT_ATTR_NOSYMFOLLOW 0x00200000 /* Do not follow symlinks. */ +/* For mount_setattr. */ +struct mount_attr +{ + uint64_t attr_set; + uint64_t attr_clr; + uint64_t propagation; + uint64_t userns_fd; +}; + +#define MOUNT_ATTR_SIZE_VER0 32 /* sizeof first published struct */ + /* move_mount flags. */ #define MOVE_MOUNT_F_SYMLINKS 0x00000001 /* Follow symlinks on from path */ #define MOVE_MOUNT_F_AUTOMOUNTS 0x00000002 /* Follow automounts on from path */ @@ -240,6 +253,15 @@ extern int fspick (int __dfd, const char *__path, unsigned int __flags) extern int open_tree (int __dfd, const char *__filename, unsigned int __flags) __THROW; +/* Change the mount proprieties of the mount or an entire mount tree. If + PATH is a relative pathname, then it is interpreted relative to the directory + referred to by the file descriptor dirfd. Otherwise if DFD is the special + value AT_FDCWD then PATH is interpreted relative to the current working + directory of the calling process. */ +extern int mount_setattr (int __dfd, const char *__path, unsigned int __flags, + struct mount_attr *__uattr, size_t __usize) + __THROW; + __END_DECLS #endif /* _SYS_MOUNT_H */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index e5e2b528fd..f79a519d89 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -39,6 +39,7 @@ mincore - mincore i:aUV mincore mlock - mlock i:bU mlock mlockall - mlockall i:i mlockall mount EXTRA mount i:sssUp __mount mount +mount_setattr EXTRA mount_setattr i:isUpi mount_setattr move_mount EXTRA move_mount i:isisU move_mount munlock - munlock i:aU munlock munlockall - munlockall i: munlockall diff --git a/sysdeps/unix/sysv/linux/tst-mount.c b/sysdeps/unix/sysv/linux/tst-mount.c index 12a665f950..502d7e3433 100644 --- a/sysdeps/unix/sysv/linux/tst-mount.c +++ b/sysdeps/unix/sysv/linux/tst-mount.c @@ -23,6 +23,9 @@ #include #include +_Static_assert (sizeof (struct mount_attr) == MOUNT_ATTR_SIZE_VER0, + "sizeof (struct mount_attr) != MOUNT_ATTR_SIZE_VER0"); + static void subprocess (void) { @@ -67,10 +70,31 @@ subprocess (void) TEST_COMPARE (open_tree (AT_FDCWD, "", 0), -1); TEST_COMPARE (errno, ENOENT); + int fd_tree = open_tree (AT_FDCWD, "/tmp", + OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC); + TEST_VERIFY (fd_tree != -1); + { - int fd_tree = open_tree (AT_FDCWD, "/tmp", - OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC); - TEST_VERIFY (fd_tree != -1); + struct mount_attr attr = + { + .attr_set = MOUNT_ATTR_RDONLY, + }; + mount_setattr (fd_tree, "", AT_EMPTY_PATH, &attr, + sizeof (attr)); + int r = mount_setattr (fd_tree, "", AT_EMPTY_PATH, &attr, + sizeof (attr)); + /* New mount API was added on 5.1, but mount_setattr on 5.12. */ + if (r == -1) + TEST_COMPARE (errno, ENOSYS); + else + { + TEST_COMPARE (mount_setattr (-1, "", AT_EMPTY_PATH, &attr, + sizeof (attr)), -1); + TEST_COMPARE (errno, EBADF); + TEST_COMPARE (mount_setattr (fd_tree, "", AT_EMPTY_PATH, &attr, + sizeof (attr) - 8), -1); + TEST_COMPARE (errno, EINVAL); + } } _exit (0); diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index bd7c4ef801..56cad609fe 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2529,6 +2529,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 1c7f60b41a..2ed242a62d 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2635,6 +2635,7 @@ GLIBC_2.36 fsconfig F GLIBC_2.36 fsmount F GLIBC_2.36 fsopen F GLIBC_2.36 fspick F +GLIBC_2.36 mount_setattr F GLIBC_2.36 move_mount F GLIBC_2.36 open_tree F GLIBC_2.36 pidfd_getfd F