Yu Watanabe
114e85d28e
core/device: rewrite how device unit is removed from Manager.devices_by_sysfs
...
If the device unit is not the head of the list saved in
Manager.devices_by_sysfs, then it is not necessary to replace the
existing hashmap entry. This should not change any behavior, just
refactoring.
2023-04-20 09:22:25 +02:00
Yu Watanabe
24a5370bbc
list: fix double evaluation
2023-04-20 09:20:08 +02:00
Yu Watanabe
47041a2b91
hwdb: disable entry for Logitech USB receiver used by G502 X
...
Fixes a bug introduced by dede07d3d0 .
Fixes #27118 .
2023-04-19 21:14:03 +01:00
Yu Watanabe
cb3c6aec3a
core: add one missing assertion for release_resource_queue
...
Follow-up for 6ac62d61db .
2023-04-19 21:12:08 +01:00
Yu Watanabe
c19f1cc9a5
test: add regression tests for find_esp() and friend
2023-04-19 04:04:57 +09:00
Yu Watanabe
60e761d8f3
chase: replace path_prefix_root_cwd() with chaseat_prefix_root()
...
The function path_prefix_root_cwd() was introduced for prefixing the
result from chaseat() with root, but
- it is named slightly generic,
- the logic is different from what chase() does.
This makes the name more explanative and specific for the result of the
chaseat(), and make the logic consistent with chase().
Fixes https://github.com/systemd/systemd/pull/27199#issuecomment-1511387731 .
Follow-up for #27199 .
2023-04-19 03:38:59 +09:00
Yu Watanabe
8d3c49b168
fd-util: skip to check mount ID if kernel is too old and /proc is not mounted
...
Now, dir_fd_is_root() is heavily used in chaseat(), which is used at
various places. If the kernel is too old and /proc is not mounted, then
there is no way to get the mount ID of a directory. In that case, let's
silently skip the mount ID check.
Fixes https://github.com/systemd/systemd/pull/27299#issuecomment-1511403680 .
2023-04-19 03:38:47 +09:00
Yu Watanabe
4b1e461c49
mountpoint-util: check /proc is mounted on failure
2023-04-19 03:28:34 +09:00
Yu Watanabe
9a0dcf03fa
chase: prefix with the root directory only when it is not "/"
2023-04-19 03:28:34 +09:00
Yu Watanabe
237bf933de
chase: drop repeated call of empty_to_root()
2023-04-19 03:28:34 +09:00
Yu Watanabe
b3ef56bc8e
chase: update outdated comment about result path
2023-04-19 03:28:34 +09:00
Yu Watanabe
24be89ebd8
chase: make the result absolute when a symlink is absolute
...
As the path may be outside of the specified dir_fd.
2023-04-19 03:28:34 +09:00
Yu Watanabe
c0552b359c
chase: make chaseat() provides absolute path also when dir_fd points to the root directory
...
Usually, we pass the file descriptor of the root directory to chaseat()
when `--root=` is not specified. Previously, even in such case, the
result was relative, and we need to prefix the path with "/" when we
want to pass the path to other functions that do not support dir_fd, or
log or show the path. That's inconvenient.
2023-04-19 03:28:34 +09:00
Yu Watanabe
ee0e6e476e
gpt-auto: do not fail when no suitable partitions found
...
Follow-up for 598fd4da1c .
2023-04-18 17:37:56 +09:00
Yu Watanabe
2cd04086ee
process-util: make safe_fork() unset $NOTIFY_SOCKET
...
Propagating $NOTIFY_SOCKET is typically dangerous. Let's unset it unless
explicitly requested to keep it.
Fixes #27288 .
Replaces #27291 .
2023-04-17 05:46:32 +08:00
Yu Watanabe
8521338f95
exec-util: make execute_strv() optionally take root directory
...
Preparation for rewriting kernel-install in C.
2023-04-16 19:40:12 +09:00
Yu Watanabe
f384ce1187
Merge pull request #27283 from mrc0mmand/assorted-test-tweaks
...
test: a bunch of assorted tweaks, Saturday edition
2023-04-16 19:39:58 +09:00
Yu Watanabe
d8e75260e9
Merge pull request #27253 from yuwata/cmsg-find-and-copy-data
...
socket-util: introduce CMSG_FIND_AND_COPY_DATA()
2023-04-16 16:28:26 +09:00
Yu Watanabe
b5d39bb3ca
tree-wide: also use CMSG_TYPED_DATA() on writing message header
2023-04-16 13:26:58 +09:00
Yu Watanabe
1ebb0953f0
sd-dhcp-server: use CMSG_FIND_DATA() at one more place
2023-04-16 13:26:58 +09:00
Yu Watanabe
789f5c6f70
tree-wide: copy timestamp data from cmsg
...
On RISCV32, time_t is 64bit and size_t is 32bit, hence the timestamp
data in message header may not be aligned.
Fixes #27241 .
2023-04-16 13:26:58 +09:00
Yu Watanabe
4836f4c67d
socket-util: introduce CMSG_FIND_AND_COPY_DATA()
...
The cmd(3) man page says about CMSG_DATA():
> The pointer returned cannot be assumed to be suitably aligned for
> accessing arbitrary payload data types. Applications should not cast
> it to a pointer type matching the payload, but should instead use
> memcpy(3) to copy data to or from a suitably declared object.
Hence, if we want to use unaligned data in cmsg, we need to copy it
before use. That's typically important for reading timestamps in
RISCV32, as the time_t is 64bit and size_t is 32bit on the system.
2023-04-16 13:26:55 +09:00
Yu Watanabe
4ea0bcb922
chase: CHASE_MKDIR_0755 requires CHASE_NONEXISTENT and/or CHASE_PARENT
...
When CHASE_MKDIR_0755 is specified without CHASE_NONEXISTENT and
CHASE_PARENT, then chase() succeeds only when the file specified by
the path already exists, and in that case, chase() does not create
any parent directories, and CHASE_MKDIR_0755 is meaningless.
Let's mention that CHASE_MKDIR_0755 needs to be specified with
CHASE_NONEXISTENT or CHASE_PARENT, and adds a assertion about that.
2023-04-14 16:36:13 +09:00
Yu Watanabe
5a2f674a00
chase: use FLAGS_SET() macro
2023-04-14 16:28:54 +09:00
Yu Watanabe
1113e50796
tree-wide: replace __alignof__() with alignof()
...
Addresses https://github.com/systemd/systemd/pull/27254#discussion_r1165267046 .
2023-04-14 14:39:06 +09:00
Yu Watanabe
4db752e4aa
socket-util: add one missing paren
...
Follow-up for b6256af75e .
2023-04-14 13:49:35 +09:00
Yu Watanabe
924937cbc0
timesync: drop unnecessary initialization
2023-04-14 13:49:35 +09:00
Yu Watanabe
13524b29a2
Merge pull request #27254 from poettering/cmsg-align-check
...
socket-util: tighten CMSG_TYPED_DATA() alignment checks
2023-04-14 13:49:04 +09:00
Yu Watanabe
85ba4ca8f6
test: add several assertions
...
Follow-up for 7947dbe322 .
Fixes CID#1508781 and CID#1508783.
2023-04-13 11:57:29 +01:00
Yu Watanabe
06e78680e3
image-policy: introduce parse_image_policy_argument() helper
...
Addresses
https://github.com/systemd/systemd/pull/25608/commits/84be0c710d9d562f6d2cf986cc2a8ff4c98a138b#r1060130312 ,
https://github.com/systemd/systemd/pull/25608/commits/84be0c710d9d562f6d2cf986cc2a8ff4c98a138b#r1067927293 , and
https://github.com/systemd/systemd/pull/25608/commits/84be0c710d9d562f6d2cf986cc2a8ff4c98a138b#r1067926416 .
Follow-up for 84be0c710d .
2023-04-13 11:17:28 +02:00
Yu Watanabe
37734dc677
repart: always take BSD lock when whole block device is opened
...
Fixes #27236 .
2023-04-13 09:07:00 +02:00
Yu Watanabe
8e1d6003fb
Merge pull request #27217 from yuwata/boot-entry-at
...
boot-entry: introduce _at() variant
2023-04-12 22:59:54 +09:00
Yu Watanabe
d2d969bb45
boot-entry: introduce boot_entry_token_ensure_at()
2023-04-12 19:47:34 +09:00
Yu Watanabe
e61ab091b7
Merge pull request #27223 from dtardon/install-changes
...
Simplify use of bus_deserialize_and_dump_unit_file_changes()
2023-04-12 19:30:51 +09:00
Yu Watanabe
f643ca1767
Merge pull request #27033 from dtardon/array-cleanup
...
Use CLEANUP_ARRAY more
2023-04-12 16:43:39 +09:00
Yu Watanabe
fda18ce2b6
boot-entry: use chase_and_fopen_unlocked() to open /etc/kernel/entry-token
...
Otherwise, when 'root' is specified, the file may be a symlink to a host
file, and we may read wrong entry.
2023-04-12 16:23:03 +09:00
Yu Watanabe
7e430500d2
udev-test: add more testcases for SYMLINK
2023-04-12 10:52:14 +09:00
Yu Watanabe
70e4510805
sd-device: absolute devlink must start with /dev/
...
This also makes device node path is handled with the same logic.
Addresses https://github.com/systemd/systemd/pull/27169#discussion_r1162739511 .
Follow-up for 2c5f119c3c .
2023-04-12 09:20:11 +09:00
Yu Watanabe
3b5fc5fb1b
boot-entry: prioritize machine ID only when it is not randomly generated
...
Preparation for later commits. The parameter will be used in
kernel-install later.
2023-04-12 08:31:50 +09:00
Yu Watanabe
19db450f3a
hwdb: fix ambiguous glob pattern for Lenovo machines
...
Fixes #27195 .
Follow-up for a5c0ad9a9a .
2023-04-11 13:21:34 +02:00
Yu Watanabe
538d878dbd
os-util: introduce several _at() variants of os-release parsers
2023-04-11 18:49:45 +09:00
Yu Watanabe
5cf69e709e
os-util: make $SYSTEMD_OS_RELEASE prefixed with the root directory
...
To make it consistent with other env vars, e.g. $SYSTEMD_ESP_PATH or
$SYSTEMD_XBOOTLDR_PATH.
This is useful when the root is specified by a file descriptor, instead
of a path.
2023-04-11 18:49:23 +09:00
Yu Watanabe
f4a1d32c82
os-util: merge parse_{extension,os}_release()
2023-04-11 18:49:23 +09:00
Yu Watanabe
7ef43c78df
os-util: invert order of arguments in extension release parser
...
For consistency with other functions.
Unfortunately, va_start() requires that the previous argument is a
pointer, hence the order of the arguments in the internal function
cannot be changed.
2023-04-11 18:49:23 +09:00
Yu Watanabe
61acfd8311
os-util: shorten temporal variable names
...
No functional change, just refactoring.
2023-04-11 18:49:20 +09:00
Yu Watanabe
59c4707594
os-util: log one more error cause
2023-04-11 18:48:58 +09:00
Yu Watanabe
c9d64f8a2c
os-util: do not use 'r' for storing loop status
...
The variable 'r' is usually used for storing return value of functional
call. Let's introduce another boolean to store the current loop status.
No functional change, just refactoring.
2023-04-11 18:48:58 +09:00
Yu Watanabe
7421f20c7e
os-util: return earlier when unsupported image class is specified
2023-04-11 18:47:15 +09:00
Yu Watanabe
7213c75045
os-util: return earlier when extension release file is found
...
No functional change, just refactoring.
2023-04-11 18:44:50 +09:00
Yu Watanabe
a84677e0f4
os-util: split-out open_os_release() from open_extension_release()
...
The logics of opening os-release and extension-release are completely
different.
No functional change, just refactoring.
2023-04-11 18:44:50 +09:00
Yu Watanabe
6f0f4d1488
os-util: fix fd leak on failure
2023-04-11 18:44:50 +09:00
Yu Watanabe
396ec9587c
os-util: make open_extension_release() return O_PATH fd
2023-04-11 18:44:50 +09:00
Yu Watanabe
53cbf5f9a6
os-util: drop fopen_extension_release()
2023-04-11 18:44:50 +09:00
Yu Watanabe
bfeaa62dbc
compress: replace compress_blob() with compress_blob_explicit()
...
And make compress_xyz() return 0 on success, as we know which compression
algorithm is used when calling compress_blob().
Follow-up for 2360352ef0 .
2023-04-11 09:14:34 +02:00
Yu Watanabe
0d68cd72b6
chase: drop redundant call of delete_trailing_chars()
...
In that branch, 'root' is a non-root and absolute path.
Hence, delete_trailing_chars() does not make the path empty.
And, if the path contains redundant slashes at the end, that will be
dropped by path_simplify().
2023-04-11 09:06:05 +02:00
Yu Watanabe
0f9aca9a98
Merge pull request #27207 from masatake/busctl--help-msg
...
busctl: add --xml-interface to the help message
2023-04-11 14:42:27 +09:00
Yu Watanabe
c689c541a1
Merge pull request #27201 from yuwata/o-path-support
...
Support O_PATH more
2023-04-11 12:37:37 +09:00
Yu Watanabe
2653ded4d1
Merge pull request #27199 from yuwata/find-esp
...
path-util: introduce path_prefix_root_cwd(), and use it in find_esp() and friends
2023-04-11 12:36:13 +09:00
Yu Watanabe
562f22dbfc
Merge pull request #27202 from yuwata/os-release-tiny-cleanups
...
os-util: tiny cleanups
2023-04-11 12:35:34 +09:00
Yu Watanabe
06692fdb5b
env-file: introduce parse_env_file_fdv()
2023-04-11 12:33:14 +09:00
Yu Watanabe
fb4d9bf47f
find-esp: use path_prefix_root_cwd()
...
Unlikely, but even if find_esp() or friends called with unnormalized or
relative 'root', let's make the result path normalized and absolute.
Note, before 63105f33ed , these functions
returned an absolute and normalized path. But the commit made the result
path simply concatenated with root.
Follow-up for 63105f33ed .
2023-04-11 06:27:11 +09:00
Yu Watanabe
75cc8d7c42
path-util: introduce path_prefix_root_cwd()
2023-04-11 06:27:05 +09:00
Yu Watanabe
adc5b9823c
test: update description
2023-04-11 06:07:15 +09:00
Yu Watanabe
6fdc9fbc0f
udev/scsi_id: rename positional arguments
2023-04-11 06:07:03 +09:00
Yu Watanabe
8352a29b6d
device-nodes: rename argument
2023-04-11 05:53:58 +09:00
Yu Watanabe
8c14d828d4
os-util: drop redundant declaration of load_os_release_pairs()
2023-04-11 05:20:15 +09:00
Yu Watanabe
d67071d2f6
os-util: use _IMAGE_CLASS_INVALID
...
When extension is not specified, image class is not necessary to be
specified. Let's use _IMAGE_CLASS_INVALID as an indicator that no
extension is specified.
2023-04-11 05:20:15 +09:00
Yu Watanabe
c2cd950817
os-util: move declaration of string table lookup for image class
2023-04-11 05:20:15 +09:00
Yu Watanabe
fe008489f7
portable: always reopen fd of release file
...
To make it support the case that the fd is O_PATH.
2023-04-11 05:17:52 +09:00
Yu Watanabe
e63d070373
copy: make copy_bytes() support O_PATH fds
2023-04-11 05:17:10 +09:00
Yu Watanabe
b4cb4c5cc6
fd-util: slightly optimize dir_fd_is_root()
...
When STATX_MNT_ID is not supported, we need to manually obtain mount id.
Let's compare inodes earlier.
2023-04-10 10:04:46 +09:00
Yu Watanabe
a6ef5ef707
chase: use dir_fd_is_root() to check if fd points to the root directory
...
As commented in dir_fd_is_root(), comparing inode is not enough to
determine if we are at the root directory.
2023-04-10 09:55:29 +09:00
Yu Watanabe
4443e3003a
chase: use stat_inode_same() at one more place
2023-04-10 09:45:21 +09:00
Yu Watanabe
de68bf7896
test: add tests about iterator position for path_find_{first,last}_component()
...
When path_find_first_component() returns the last component, the iterator
must be an empty string. The fact is heavily used in chaseat(). Let's
explicitly test it.
2023-04-10 09:39:14 +09:00
Yu Watanabe
3a7ba9f6b9
path-util: make iterator for path_find_last_component() always finish with the beginning of the buffer
2023-04-10 09:30:14 +09:00
Yu Watanabe
a0d3e0ec79
chase: extend comment about CHASE_PARENT
2023-04-10 08:57:01 +09:00
Yu Watanabe
75adfc3b17
chase: drop one redundant call of fstat()
...
Now, 'st' is always synced with 'fd'. Hence, we can use
stat_verify_directory().
2023-04-10 08:43:31 +09:00
Yu Watanabe
ad66c7f1d3
chase: make struct stat always sync with the opened fd
...
Previously, struct stat may not be correctly synced with the currently
opened fd, e.g. when a path contains symlink which points to an absolute
path.
This also rename variables for struct stat, to make them consistent with
the corresponding fd.
2023-04-10 08:40:14 +09:00
Yu Watanabe
db0096f2ad
chase: drop unnecessary conditions for buffer
2023-04-10 08:17:07 +09:00
Yu Watanabe
32cc2cfac9
test: add another regression test
...
For #27187 , which should be also caused by #26956 .
2023-04-10 05:43:09 +09:00
Yu Watanabe
1538136911
test: systemd-analyze blame should succeed now
2023-04-10 05:34:30 +09:00
Yu Watanabe
63d7632d87
analyze: make blame command work even the default target not reached
2023-04-10 03:41:15 +09:00
Yu Watanabe
b98afb23bf
kernel-image: make inspect_kernel() optionally take directory fd
2023-04-09 07:10:20 +02:00
Yu Watanabe
46b457e54b
fileio: introduce read_one_line_file_at()
2023-04-09 07:08:38 +02:00
Yu Watanabe
61d9982c51
fileio: introduce xfopenat_full()
...
This unifies call of various xfopenat() variants.
No functional change, just refactoring.
2023-04-08 19:03:46 +09:00
Yu Watanabe
0f585d4116
fileio: use take_fdopen() and friends
2023-04-08 14:34:53 +09:00
Yu Watanabe
728d7382a0
Merge pull request #27160 from yuwata/conf_files_list_at
...
conf-files: introduce _at() variants of conf file enumerator
2023-04-08 14:25:20 +09:00
Yu Watanabe
37cc68b30c
Merge pull request #27174 from YHNdnzj/edit-util-fixlets
...
edit-util: several improvements
2023-04-08 13:56:06 +09:00
Yu Watanabe
18a6cd4ba3
test-64: add tests for compat devlinks for NVMe drive
2023-04-08 06:12:29 +09:00
Yu Watanabe
add762605a
test: add tests for conf_files_list_at() and friends
2023-04-08 06:01:10 +09:00
Yu Watanabe
b1229544a0
conf-files: introduce _at() variants of conf_files_list() or friends
2023-04-08 05:09:48 +09:00
Yu Watanabe
1a39bddfbb
conf-files: split out logic of copy and sort filenames from hashmap
...
No functional change, preparation for the next commit.
2023-04-08 05:08:51 +09:00
Yu Watanabe
273426750a
conf-files: use path_compare_filename()
2023-04-08 05:08:51 +09:00
Yu Watanabe
6808e00463
path-util: introduce path_compare_filename()
2023-04-08 05:08:51 +09:00
Yu Watanabe
a5af5f80ca
conf-files: drop redundant call of chase()
...
Previously, chase() was called twice in files_add() and path_strv_resolve_uniq().
2023-04-08 05:08:48 +09:00
Yu Watanabe
49e3e219b0
rules: drop doubled space
2023-04-08 04:50:04 +09:00
Yu Watanabe
8f5a8d7c36
sd-device: manage cached sysattr values with path_hash_ops
...
As here keys are relative paths to sysattrs.
2023-04-08 04:50:04 +09:00
Yu Watanabe
0b4c70b47a
sd-device,udev: tag must be a valid filename
...
All tags are managed under /run/udev/tags, and the directories there are
named with tags. Hence, each tag must be a valid filename.
This also makes all validity check moved to sd-device side, and
makes failure caused by setting invalid tags non-critical.
With this change, an empty string cannot be assigned to TAG=, hence the
test cases are adjusted.
2023-04-08 04:49:46 +09:00
Yu Watanabe
b6b446cb62
test: handle one more error gracefully
...
Fixes #27175 .
2023-04-07 20:54:23 +02:00
Yu Watanabe
2c5f119c3c
sd-device,udev: refuse invalid devlink and store in normalized form
...
This is especially for the case that the path contains "..".
Prompted by https://github.com/systemd/systemd/pull/27164#issuecomment-1498863858 .
This also makes SYMLINK= gracefully handle paths prefixed with "/dev/",
and manage devlink paths with path_hash_ops.
2023-04-08 03:38:19 +09:00