1
0
mirror of https://github.com/systemd/systemd synced 2026-03-13 00:24:48 +01:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek
e4dcf0cbce
discover-image: restore compatibility with C9S and overlayfs directories (#40616)
5817c73391b5f3599c50df2c0873b26ea426f848 broke compatibility with CentOS
9 and overlayfs directories, the following fails with -EOPTNOTSUPP:

mount -t overlay overlay -o lowerdir=/tmp/app1:/tmp/rootdir /tmp/overlay
portablectl attach --copy=symlink --now --runtime /tmp/overlay app1

name_to_handle_at() fails both with and without AT_HANDLE_MNT_ID_UNIQUE.

Restore the fallback to path_get_mnt_id_at() that was removed. Fixes
TEST-29-PORTABLE.directory

Follow-up for 5817c73391b5f3599c50df2c0873b26ea426f848
2026-02-10 07:56:48 +01:00
Luca Boccassi
7755127ca5 mkosi: isc-dhcp-server was dropped from debian testing/unstable 2026-02-09 20:03:38 +00:00
Luca Boccassi
cd45d803c3 discover-image: restore compatibility with C9S and overlayfs directories
5817c73391b5f3599c50df2c0873b26ea426f848 broke compatibility with
CentOS 9 and overlayfs directories, the following fails with -EOPTNOTSUPP:

mount -t overlay overlay -o lowerdir=/tmp/app1:/tmp/rootdir /tmp/overlay
portablectl attach --copy=symlink --now --runtime /tmp/overlay app1

name_to_handle_at() fails both with and without AT_HANDLE_MNT_ID_UNIQUE.

Restore the fallback to path_get_mnt_id_at() that was removed.
Fixes TEST-29-PORTABLE.directory

Follow-up for 5817c73391b5f3599c50df2c0873b26ea426f848
2026-02-09 19:39:51 +00:00
3 changed files with 35 additions and 4 deletions

View File

@ -48,7 +48,6 @@ Packages=
hostname hostname
iproute2 iproute2
iputils-ping iputils-ping
isc-dhcp-server
knot knot
libcap-ng-utils libcap-ng-utils
libdw-dev libdw-dev

View File

@ -0,0 +1,16 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[TriggerMatch]
Distribution=debian
Release=bullseye
Release=bookworm
Release=trixie
[TriggerMatch]
Distribution=ubuntu
Release=jammy
Release=noble
Release=questing
[Content]
Packages=isc-dhcp-server

View File

@ -455,10 +455,26 @@ static int image_make(
uint64_t on_mount_id; uint64_t on_mount_id;
int _mnt_id; int _mnt_id;
/* The fallback is required for CentOS 9 compatibility when working on a directory located on an
* overlayfs. */
r = name_to_handle_at_try_fid(fd, /* path= */ NULL, &fh, &_mnt_id, &on_mount_id, AT_EMPTY_PATH); r = name_to_handle_at_try_fid(fd, /* path= */ NULL, &fh, &_mnt_id, &on_mount_id, AT_EMPTY_PATH);
if (r < 0) if (r < 0) {
return r; if (is_name_to_handle_at_fatal_error(r))
if (r == 0) return r;
r = path_get_unique_mnt_id_at(fd, /* path= */ NULL, &on_mount_id);
if (r < 0) {
if (!ERRNO_IS_NEG_NOT_SUPPORTED(r) && r != -EUNATCH)
return r;
int on_mount_id_fallback = -1;
r = path_get_mnt_id_at(fd, /* path= */ NULL, &on_mount_id_fallback);
if (r < 0)
return r;
on_mount_id = on_mount_id_fallback;
}
} else if (r == 0)
on_mount_id = _mnt_id; on_mount_id = _mnt_id;
if (S_ISDIR(st->st_mode)) { if (S_ISDIR(st->st_mode)) {