mirror of
https://github.com/flatcar/scripts.git
synced 2025-11-11 21:52:07 +01:00
sys-apps/util-linux: Sync with Gentoo
It's from Gentoo commit efd6ba4f2700a0d421ac88465d1f4a32e3505e84.
This commit is contained in:
parent
07f407b9ba
commit
b4bb30f0ef
@ -1,4 +1,4 @@
|
||||
DIST util-linux-2.38.1.tar.sign 833 BLAKE2B 2468c6b8c881d7a17666aac954edfd421085111937f5d0daada37a679e9bbfe61fc98bb57cca9bf7bea20be483f38e2a758039f9baf5b1a901852e2b5dd014d8 SHA512 d8b3e936065ae1dc105b8ce773c874bb037ebf84ee571676509543f79c39950180e7f252c6b0d4500119568ed4ac3aa7117793de839f983e9287f26649e91dad
|
||||
DIST util-linux-2.38.1.tar.xz 7495904 BLAKE2B a0e86ca62f82adaccc01ad6ec5a058dac429b81c310989cbad136f96c2770c60bbd4287067817520e8e0653146a10f13128e0af32122402bab416e1c2d6680b8 SHA512 07f11147f67dfc6c8bc766dfc83266054e6ede776feada0566b447d13276b6882ee85c6fe53e8d94a17c03332106fc0549deca3cf5f2e92dda554e9bc0551957
|
||||
DIST util-linux-2.39.tar.sign 833 BLAKE2B f4b35d35f1d20094169c8651d127c6d1f37b0946bc72c40f4824d77f8c117a23ae2633ac2449e91ba316d4cac6e4f3c2afb9fd410302683384988dc794062d9e SHA512 f5df4f7e5c39995ad3c7b52f06bfc7759e53d4df82b2b42f09d4570faeff5c156e83e42be053b00b0bfb4a71e27bfa580fb996a92225eb8a0df46d9f296ef4ef
|
||||
DIST util-linux-2.39.tar.xz 8103428 BLAKE2B 39d415b6e303c21d2e5566bd29dd1803c67fbaed079fab85fab620db727a69c96f9c705a3671a639185c78ea1e70f374e21ef8694115ce42fa30c86b546023d1 SHA512 3d59a0f114c06be19ef7f86fca37ba5b9073823d011b3fc37997ddb00124b4505ea32903b78798a64dffbccf0ba645a692678ee845cc65a5b321824448a82a94
|
||||
DIST util-linux-2.39.1.tar.sign 833 BLAKE2B 8c1e7089bcec1f47f5c7b4ba60ca1c35955bdad99683f0682f6ba08171d3102079e7584989ea764e60096e0d64e5f9ffc8757c7feba23f79dafdb7942396a96a SHA512 6d6cabd24ebe3ce7437d98d08793b0b27d6240f2a28e08e216b4b1d358c9024fa1cec6d17df6cf7f024f97647cd31990db94716a575b08ad15f3a0b75797912b
|
||||
DIST util-linux-2.39.1.tar.xz 8351164 BLAKE2B 1c2f3a77414dc9e99d17c426ca710524f898b6fd13bee120c08ceb375e475044ff6f2668f58bd799d0e3befe36de6cc1e161a1be7102e4590a8e372b6547ec1c SHA512 8fe2c9014f6161330610f7470b870855cecbd3fab9c187b75d8f22e16573c82516050479be39cfb9f7dd6d7ef1cc298d31d839b194dda5ec4daf0d1197ac71e9
|
||||
|
||||
@ -1,98 +0,0 @@
|
||||
https://bugs.gentoo.org/906797
|
||||
https://github.com/util-linux/util-linux/pull/2248
|
||||
|
||||
From 1bd85b64632280d6bf0e86b4ff29da8b19321c5f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
|
||||
Date: Sat, 20 May 2023 06:38:20 +0200
|
||||
Subject: [PATCH] libmount: check for availability of mount_setattr
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
If mount_setattr is not available but needed fall back to the legacy
|
||||
mount API.
|
||||
|
||||
Fixes #2247
|
||||
|
||||
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
|
||||
--- a/libmount/src/hook_mount.c
|
||||
+++ b/libmount/src/hook_mount.c
|
||||
@@ -510,6 +510,15 @@ static inline int fsopen_is_supported(void)
|
||||
return rc;
|
||||
}
|
||||
|
||||
+static inline int mount_setattr_is_supported(void)
|
||||
+{
|
||||
+ int rc;
|
||||
+
|
||||
+ errno = 0;
|
||||
+ rc = mount_setattr(-1, NULL, 0, NULL, 0);
|
||||
+ return !(rc == -1 && errno == ENOSYS);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* open_tree() and fsopen()
|
||||
*/
|
||||
@@ -675,9 +684,14 @@ static int hook_prepare(struct libmnt_context *cxt,
|
||||
/* call mount_setattr() */
|
||||
if (!rc
|
||||
&& cxt->helper == NULL
|
||||
- && (set != 0 || clr != 0 || (flags & MS_REMOUNT)))
|
||||
+ && (set != 0 || clr != 0 || (flags & MS_REMOUNT))) {
|
||||
+ if (!mount_setattr_is_supported()) {
|
||||
+ hookset_deinit(cxt, hs);
|
||||
+ return 1;
|
||||
+ }
|
||||
rc = mnt_context_append_hook(cxt, hs, MNT_STAGE_MOUNT, NULL,
|
||||
hook_set_vfsflags);
|
||||
+ }
|
||||
|
||||
/* call move_mount() to attach target */
|
||||
if (!rc
|
||||
@@ -688,9 +702,14 @@ static int hook_prepare(struct libmnt_context *cxt,
|
||||
hook_attach_target);
|
||||
|
||||
/* set propagation (has to be attached to VFS) */
|
||||
- if (!rc && mnt_optlist_get_propagation(ol))
|
||||
+ if (!rc && mnt_optlist_get_propagation(ol)) {
|
||||
+ if (!mount_setattr_is_supported()) {
|
||||
+ hookset_deinit(cxt, hs);
|
||||
+ return 1;
|
||||
+ }
|
||||
rc = mnt_context_append_hook(cxt, hs, MNT_STAGE_MOUNT_POST, NULL,
|
||||
hook_set_propagation);
|
||||
+ }
|
||||
|
||||
DBG(HOOK, ul_debugobj(hs, "prepare mount done [rc=%d]", rc));
|
||||
return rc;
|
||||
diff --git a/tests/expected/mount/fallback-mount_setattr b/tests/expected/mount/fallback-mount_setattr
|
||||
new file mode 100644
|
||||
index 0000000000..3e18ebf09e
|
||||
--- /dev/null
|
||||
+++ b/tests/expected/mount/fallback-mount_setattr
|
||||
@@ -0,0 +1 @@
|
||||
+private
|
||||
--- a/tests/ts/mount/fallback
|
||||
+++ b/tests/ts/mount/fallback
|
||||
@@ -68,5 +68,21 @@ $TS_CMD_UMOUNT $MOUNTPOINT
|
||||
ts_finalize_subtest
|
||||
|
||||
|
||||
+ts_init_subtest "mount_setattr"
|
||||
+"$TS_CMD_MOUNT" "$DEVICE" "$MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
|
||||
+$TS_HELPER_ENOSYS -s mount_setattr -- \
|
||||
+ "$TS_CMD_MOUNT" -o remount,ro "$MOUNTPOINT" \
|
||||
+ >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+$TS_CMD_FINDMNT --kernel --mountpoint "$MOUNTPOINT" --options "ro" &> /dev/null
|
||||
+[ "$?" == "0" ] || ts_die "Cannot find read-only in $MOUNTPOINT in /proc/self/mountinfo"
|
||||
+$TS_HELPER_ENOSYS -s mount_setattr -- \
|
||||
+ "$TS_CMD_MOUNT" --make-slave "$MOUNTPOINT" \
|
||||
+ >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+$TS_CMD_FINDMNT -n --kernel --mountpoint "$MOUNTPOINT" -o PROPAGATION >> $TS_OUTPUT
|
||||
+$TS_CMD_UMOUNT $MOUNTPOINT
|
||||
+ts_finalize_subtest
|
||||
+
|
||||
+
|
||||
ts_finalize
|
||||
|
||||
@ -1,79 +0,0 @@
|
||||
https://github.com/util-linux/util-linux/issues/2267
|
||||
https://github.com/storaged-project/libblockdev/pull/889
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2189241
|
||||
https://github.com/util-linux/util-linux/commit/f94a7760ed7ce81389a6059f020238981627a70d
|
||||
|
||||
From f94a7760ed7ce81389a6059f020238981627a70d Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 25 May 2023 11:48:24 +0200
|
||||
Subject: [PATCH] libmount: don't call hooks after mount.<type> helper
|
||||
|
||||
In case more filesystems are specified (or when libmount follows
|
||||
/{etc,proc}/filesystems) then the library may try to use and
|
||||
initialize the new API because for some filesystems, we need
|
||||
exec(/sbin/mount.<type>) and for another fsopen().
|
||||
|
||||
The hooks that use the API have to smart and detect that the mount
|
||||
operation was done in external /sbin/mount.<type> helper. And in this
|
||||
case, the new API file descriptors must be ignored.
|
||||
|
||||
The exception is propagation flags, mount(8) can set the flags after
|
||||
exec(/sbin/mount.<type>), for example, "mount -t ntfs --make-private".
|
||||
|
||||
Fixes: https://github.com/util-linux/util-linux/issues/2267
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
--- a/libmount/src/context_mount.c
|
||||
+++ b/libmount/src/context_mount.c
|
||||
@@ -508,6 +508,8 @@ static int do_mount(struct libmnt_context *cxt, const char *try_type)
|
||||
assert(cxt->fs);
|
||||
assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED));
|
||||
|
||||
+ mnt_context_reset_status(cxt);
|
||||
+
|
||||
if (try_type) {
|
||||
rc = mnt_context_prepare_helper(cxt, "mount", try_type);
|
||||
if (rc)
|
||||
--- a/libmount/src/hook_mount.c
|
||||
+++ b/libmount/src/hook_mount.c
|
||||
@@ -239,6 +239,10 @@ static int hook_create_mount(struct libmnt_context *cxt,
|
||||
int rc = 0;
|
||||
|
||||
assert(cxt);
|
||||
+
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
assert(cxt->fs);
|
||||
|
||||
api = get_sysapi(cxt);
|
||||
@@ -309,6 +313,9 @@ static int hook_reconfigure_mount(struct libmnt_context *cxt,
|
||||
|
||||
assert(cxt);
|
||||
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
api = get_sysapi(cxt);
|
||||
assert(api);
|
||||
assert(api->fd_tree >= 0);
|
||||
@@ -379,6 +386,9 @@ static int hook_set_vfsflags(struct libmnt_context *cxt,
|
||||
uint64_t set = 0, clr = 0;
|
||||
int rc = 0;
|
||||
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
DBG(HOOK, ul_debugobj(hs, "setting VFS flags"));
|
||||
|
||||
ol = mnt_context_get_optlist(cxt);
|
||||
@@ -471,6 +481,9 @@ static int hook_attach_target(struct libmnt_context *cxt,
|
||||
const char *target;
|
||||
int rc = 0;
|
||||
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
target = mnt_fs_get_target(cxt->fs);
|
||||
if (!target)
|
||||
return -EINVAL;
|
||||
|
||||
@ -1,46 +0,0 @@
|
||||
https://bugs.gentoo.org/906797#c4
|
||||
https://bugs.gentoo.org/906859
|
||||
https://github.com/util-linux/util-linux/issues/2238
|
||||
https://github.com/util-linux/util-linux/commit/c0267687fd7b41b00d523d1985182d7eb574effd
|
||||
|
||||
From c0267687fd7b41b00d523d1985182d7eb574effd Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 22 May 2023 15:00:25 +0200
|
||||
Subject: [PATCH] libmount: fix options prepend/insert and merging
|
||||
|
||||
* the order of the new options should not be changed
|
||||
(for example prepend "a,b,c" to list with "d" has to generate "a,b,c,d", not "c,b,a,d")
|
||||
|
||||
* make sure that options map is defined when merging options
|
||||
|
||||
Fixes: https://github.com/util-linux/util-linux/issues/2238
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
--- a/libmount/src/optlist.c
|
||||
+++ b/libmount/src/optlist.c
|
||||
@@ -338,6 +338,7 @@ int mnt_optlist_merge_opts(struct libmnt_optlist *ls)
|
||||
|
||||
/* remove inverted option */
|
||||
else if (opt->ent && x->ent
|
||||
+ && opt->map == x->map
|
||||
&& opt->ent->id == x->ent->id
|
||||
&& (opt->ent->mask & MNT_INVERT
|
||||
|| x->ent->mask & MNT_INVERT))
|
||||
@@ -520,6 +521,8 @@ static int optlist_add_optstr(struct libmnt_optlist *ls, const char *optstr,
|
||||
if (!opt)
|
||||
return -ENOMEM;
|
||||
opt->src = MNT_OPTSRC_STRING;
|
||||
+ if (where)
|
||||
+ where = &opt->opts;
|
||||
}
|
||||
|
||||
optlist_cleanup_cache(ls);
|
||||
@@ -622,6 +625,8 @@ static int optlist_add_flags(struct libmnt_optlist *ls, unsigned long flags,
|
||||
if (!opt)
|
||||
return -ENOMEM;
|
||||
opt->src = MNT_OPTSRC_FLAG;
|
||||
+ if (where)
|
||||
+ where = &opt->opts;
|
||||
}
|
||||
|
||||
optlist_cleanup_cache(ls);
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
https://github.com/util-linux/util-linux/pull/2248
|
||||
https://bugs.gentoo.org/906797
|
||||
|
||||
--- a/tests/helpers/test_enosys.c
|
||||
+++ b/tests/helpers/test_enosys.c
|
||||
@@ -68,6 +68,7 @@ const struct syscall syscalls[] = {
|
||||
{ "move_mount", __NR_move_mount },
|
||||
{ "open_tree", __NR_open_tree },
|
||||
{ "fsopen", __NR_fsopen },
|
||||
+ { "mount_setattr", __NR_mount_setattr },
|
||||
};
|
||||
|
||||
int main(int argc, char **argv)
|
||||
@ -94,13 +94,6 @@ fi
|
||||
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) su? ( pam )"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${P}-check-for-mount_setattr.patch"
|
||||
"${FILESDIR}/${P}-tests-for-mount_setattr.patch"
|
||||
"${FILESDIR}/${P}-mount-parse-options-user.patch"
|
||||
"${FILESDIR}/${P}-mount-dont-call-hooks.patch"
|
||||
)
|
||||
|
||||
pkg_pretend() {
|
||||
if use su && ! use suid ; then
|
||||
elog "su will be installed as suid despite USE=-suid (bug #832092)"
|
||||
@ -212,6 +205,10 @@ multilib_src_configure() {
|
||||
--localstatedir="${EPREFIX}/var"
|
||||
--runstatedir="${EPREFIX}/run"
|
||||
--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
|
||||
|
||||
# Temporary workaround until ~2.39.2. 2.39.x introduced a big rewrite.
|
||||
# https://github.com/util-linux/util-linux/issues/2287#issuecomment-1576640373
|
||||
--disable-libmount-mountfd-support
|
||||
)
|
||||
|
||||
local myeconfargs=(
|
||||
Loading…
x
Reference in New Issue
Block a user